Spring 弹簧不';不要用我的电脑。为什么?
我有自定义转换器:Spring 弹簧不';不要用我的电脑。为什么?,spring,spring-mvc,jodatime,Spring,Spring Mvc,Jodatime,我有自定义转换器: public class DateTimeConverter implements Converter<String, DateTime> { private static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss"; private DateTimeFormatter formatter; private String datePattern = DEFAULT
public class DateTimeConverter implements Converter<String, DateTime> {
private static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";
private DateTimeFormatter formatter;
private String datePattern = DEFAULT_DATE_PATTERN;
public String getDatePattern() {
return datePattern;
}
@Autowired(required = false)
public void setDatePattern(String datePattern) {
this.datePattern = datePattern;
}
@PostConstruct
public void init() {
formatter = DateTimeFormat.forPattern(datePattern);
}
@Override
public DateTime convert(String source) {
if (source == null) return new DateTime();
return formatter.parseDateTime(source);
}
}
我在设置中注册了转换器:
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.myapp.util.DateTimeConverter"/>
</list>
</property>
</bean>
测试:
但是,在这种情况下:
@Test
public void testFindById() throws Exception {
ConversionService conversionService = (ConversionService) context.getBean("conversionService");
assertTrue(conversionService.canConvert(String.class, DateTime.class));
建立成功
我不明白:为什么感谢您提供的任何帮助您不必创建自己的转换器或注册转换服务-如果Joda Time位于项目的类路径中,则通过注释(
是必需的)
因此,您需要的只是:
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private DateTime dateAndTime;
你什么时候有例外?发布触发它的代码。当我启动测试时,我会得到异常。向我们显示测试类,然后…@john812是否在
business config.xml
中注册了ConversionService?你能在测试中自动连接你的DateTimeConverter
吗?是的,ConversionService在business-config.xml中注册,我能自动连接我的转换器和ConversionService(annotation@Autowired)你是100%对的。然而,为什么自定义转换器不工作仍然是一个谜。@Pavelholl这是典型的IMO。可能是,但这不是我评论的重点。配置似乎完全有效,但它不起作用。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/resources/spring/business-config.xml")
public class JdbcTransactionRepositoryImplTest extends TestCase {
private static final Logger logger = Logger.getLogger(JdbcTransactionRepositoryImplTest.class);
@Autowired
private ApplicationContext context;
private JdbcTransactionRepositoryImpl transactionRepository;
@Before
public void setup() {
transactionRepository = new JdbcTransactionRepositoryImpl((DataSource) context.getBean("dataSource"));
}
@Test
public void testFindById() throws Exception {
Transaction tr1 = transactionRepository.findById(1);
assertEquals(new Long(1L), tr1.getId());
}
@Test
public void testFindById() throws Exception {
ConversionService conversionService = (ConversionService) context.getBean("conversionService");
assertTrue(conversionService.canConvert(String.class, DateTime.class));
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private DateTime dateAndTime;