Я работаю с Spring Framework 4.0.7Как применить Spring Formatter <T> в автономном или тестирования приложения
О Formatters
Для приложения Spring MVC У меня есть следующие:
@Autowired
private Set<Formatter<?>> formatters;
@Override
public void addFormatters(FormatterRegistry registry) {
for(Formatter<?> formatter : formatters){
registry.addFormatter(formatter);
}
}
И отлично работает.
для Spring Web Flow, я должен добавить следующие
@Bean
public DefaultFormattingConversionService conversionService(){
DefaultFormattingConversionService dfcs = new DefaultFormattingConversionService();
for(Formatter<?> formatter : formatters){
dfcs.addFormatter(formatter);
}
return dfcs;
}
И работает отлично
Пока здесь, я не могу видеть в любых веб-форм (MVC & потоков), что, когда некоторые данные представляют или загружены formatters
выполняют свою работу.
У меня есть впечатление, что DefaultFormattingConversionService может использоваться как автономно, так и для целей тестирования (JUnit) для отображения некоторого объекта в формате (десятичные форматы, например: Double & BigDecimal).
Специализация FormattingConversionService, сконфигурированная по умолчанию с преобразователями и форматировщиками, подходящими для большинства приложений.
Предназначен для прямого использования, но и подвергает статические addDefaultFormatters (org.springframework.format.FormatterRegistry) Служебный метод для специального применения против любого экземпляра FormatterRegistry, так же, как DefaultConversionService подвергает свой собственный метод addDefaultConverters.
В соответствии с вышеизложенным нет никаких ограничений, которые могут быть применены или использованы только в веб-среде.
Для нового автономного приложения с conversionService()
объявленной
я следующее:
@Component
public class PersonService {
private static final Logger logger = LoggerFactory.getLogger(PersonService.class);
public void printPerson(Person person){
logger.info("{}", person.toString());
}
}
В Main
AnnotationConfigApplicationContext context = ...
Person person = PersonFactory.createPerson();
PersonService personService = context.getBean(PersonService.class);
personService.printPerson(person);
При запуске приложения, я могу увидеть и подтвердить что все форматирующие элементы загружены в ApplicationContext, но когда объект печатается, ни один форматир в соответствии с типом (Double, BigDecimal) выполняются.
Какая дополнительная конфигурация требуется? Очевидно, что-то требуется
Я не уверен, если это возможно, мне нужно, что когда метод .toString()
называется, весна в некотором роде может быть в состоянии применить formatters
для двойного BigDecimal и дата свойств объекта. Это для автономного приложения и для тестирования.
«Formatter» будет использоваться только при использовании Spring для вывода поля или объекта. Вы просто делаете 'toString()', который не делает и ничего не знает о форматировщиках. –
Я понимаю, для целей консоли Spring, что предлагает сделать вывод? Спасибо –