如何应用Spring格式化程序<;T>;在独立或测试应用程序中
我正在使用SpringFramework 4.0.7 关于格式化程序 对于Spring MVC应用程序,我有以下几点:如何应用Spring格式化程序<;T>;在独立或测试应用程序中,spring,spring-3,spring-4,Spring,Spring 3,Spring 4,我正在使用SpringFramework 4.0.7 关于格式化程序 对于Spring MVC应用程序,我有以下几点: @Autowired private Set<Formatter<?>> formatters; @Override public void addFormatters(FormatterRegistry registry) { for(Formatter<?> formatter : formatters){
@Autowired
private Set<Formatter<?>> formatters;
@Override
public void addFormatters(FormatterRegistry registry) {
for(Formatter<?> formatter : formatters){
registry.addFormatter(formatter);
}
}
@Component
public class PersonService {
private static final Logger logger = LoggerFactory.getLogger(PersonService.class);
public void printPerson(Person person){
logger.info("{}", person.toString());
}
}
大体上
AnnotationConfigApplicationContext context = ...
Person person = PersonFactory.createPerson();
PersonService personService = context.getBean(PersonService.class);
personService.printPerson(person);
当我运行应用程序时,我可以看到并确认所有的格式化程序都已加载到ApplicationContext中,但当打印对象时,不会执行符合类型(Double、BigDecimal)的格式化程序
需要什么额外的配置?显然需要做点什么
我不确定是否可行,我需要在调用.toString()
方法时,Spring能够以某种方式将格式化程序应用于实体的双bigdecime和Date属性。
它用于独立应用程序和测试。我也有同样的问题。
我意识到在没有MVC的情况下测试格式化程序和转换器很不方便,但结果比我想象的要简单
我希望我的方式也适用于你
例如:
我有一个简单的转换器。可以从用户名转换为用户对象的
字符串用户名->用户对象,反之亦然
测试it的解决方案:
@Autowired
ConversionService conversionService;
@Test
public void testConversionService(){
assertThat(conversionService,not(equalTo(null)));
User user = conversionService.convert("Huy", User.class);
assertThat(user,not(equalTo(null)));
assertThat(user.getUserName(),equalTo("Huy"));
}
希望对你有所帮助 只有在使用Spring输出字段或对象时,才会使用格式化程序。你只是在做一个toString()
,它对格式化程序既不了解也不了解。我理解,出于控制台的目的,Spring提供了什么来做输出?谢谢让我尽快测试你的工作,但是我使用Formatter
而你使用ConversionService
是的,这是相同的测试方法。
@Autowired
ConversionService conversionService;
@Test
public void testConversionService(){
assertThat(conversionService,not(equalTo(null)));
User user = conversionService.convert("Huy", User.class);
assertThat(user,not(equalTo(null)));
assertThat(user.getUserName(),equalTo("Huy"));
}