如何在Spring MVC中注册Formatters包

时间:2016-05-11 00:32:22

标签: spring spring-mvc

假设我在一个包中包含200个格式化程序。如何注册格式化程序包而不是这样做:

<mvc:annotation-driven conversion-service="conversionService" />

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="formatters">
        <set>
           <ref bean="MyFormatter1" />
           <ref bean="MyFormatter2" />
           ...
           <ref bean="MyFormatter200" />
        </set>
    </property>
</bean>

1 个答案:

答案 0 :(得分:0)

我会尝试使用java配置:

import org.springframework.context.annotation.Configuration;
import org.springframework.format.Formatter;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;


@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        for (Formatter formatter : collectFormatters()) {
            registry.addFormatter(formatter);
        }
    }
}

现在您需要实现collectFormatters方法。我不知道您的应用程序的详细信息,因此可能有许多不同的方法:

1)您可以将@Component注释添加到所有格式化程序,将此包添加到自动扫描,因此Spring将初始化它们并添加到应用程序上下文中。之后,您可以像这样注入它们:@Resource List<Formatter> formatters

2)你可以自己编写一些逻辑来检查包(我建议看看Spring是如何做的)。