Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何应用Spring格式化程序<;T>;在独立或测试应用程序中_Spring_Spring 3_Spring 4 - Fatal编程技术网

如何应用Spring格式化程序<;T>;在独立或测试应用程序中

如何应用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){

我正在使用SpringFramework 4.0.7

关于格式化程序

对于Spring MVC应用程序,我有以下几点:

@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"));
}