2016-05-11 10 views
0

Lassen Sie uns sagen, ich habe 200 Formatierer in einem Paket enthalten. Wie kann ich ein Paket von Formatierer registrieren stattdessen, dies zu tun:So registrieren Sie ein Paket von Formattern im Frühjahr MVC

<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> 

Antwort

0

ich versuchen würde, Java-Konfiguration für das verwenden:

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

Jetzt müssen Sie collectFormatters Methode implementieren. Ich kenne nicht die Details Ihrer Anwendung, also gibt es vielleicht viele verschiedene Möglichkeiten, es zu tun:

1) Sie könnten @Component Annotation an alle Formatierer setzen, fügen Sie dieses Paket zum autoscanning hinzu, also Frühling wird sie initialisieren und zum hinzufügen Anwendungskontext. Danach können Sie sie einfach so injizieren: @Resource List<Formatter> formatters.

2) Sie könnten etwas Logik für die Inspektion des Pakets selbst schreiben (ich schlage vor, wie Spring das macht).

Verwandte Themen