2016-12-15 1 views
1

Ich entwickle ein Glas, das einen Spring MVC Interceptor enthält. Ich möchte, dass jede Spring MVC Web App, die dieses Jar als Abhängigkeit hinzufügt, den Interceptor registriert.Wie man einen Spring MVC HandlerInterceptor mit einem Spring Post Prozessor dynamisch hinzufügt

Die Ziel-Apps sind mit XML konfiguriert.

In meinem Glas konnte ich habe eine XML mit:

<mvc:interceptors> 
    <mvc:interceptor> 
     <mvc:mapping path="/mynewinterceptor/**" /> 
     <bean class="com.codependent.myapp.interceptor.MyNewInterceptor"> 
     </bean> 
    </mvc:interceptor> 
</mvc:interceptors> 

auf diese Weise die Anwendungen importieren würde und erhalten die Abfangjäger registriert. Aber ich möchte, dass es transparent ist, das heißt, ich möchte, dass nur das Glas hinzugefügt wird, dass sie den Abfangjäger bekommen.

Beachten Sie, dass alle Apps bereits ein com.xxx.plugin-Paket scannen, um nach Beans zu suchen. Ich denke, es mit einer Art Federpostprozessor in diesem Paket in meinem Glas ...

Antwort

2

Versuchen,

@Configuration 
@ComponentScan({"com.include.your.jar.package"}) 
@EnableWebMvc 
public class AppConfig extends WebMvcConfigurerAdapter { 

    @Autowired 
    private HandlerInterceptor[] inteceptors; 

    @Override 
    public void addInterceptors(InterceptorRegistry registry) { 
     registry.addInterceptor(inteceptors).addPathPatterns("/");  
    } 
} 
+0

solchen Anwendungen liegt getan werden könnte, die die Abfangjäger werden verwenden bereits manuell den verschiedenen mvc konfiguriert definieren Elemente: RequestMappingHandlerAdapter, RequestMappingHandlerMapping, Nachrichtenkonverter, Ausnahme-Resolver. Wird @EnableWebMvc nicht kollidieren/außer Kraft setzen, ohne ihre eigene Konfiguration zu kontrollieren? – codependent

Verwandte Themen