2016-03-22 5 views
0

Ich bin eine Anwendung mit 100% Code-Konfiguration Ansatz für eine Feder 4 Web-App erstellen. Im Folgenden ist meine Web-Config-Klasse.Spring 4 WebApplicationInitializer log4j2 mehrere Initialisierungsprobleme

public class WebAppInitializer extends Log4jServletContainerInitializer implements WebApplicationInitializer { 


    public void onStartup(ServletContext container) throws ServletException { 
     super.onStartup(null, container); 

     // Create the 'root' Spring application context 
     AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); 
     rootContext.register(MyAppContext.class); 

     // Manage the lifecycle of the root application context 
     container.addListener(new ContextLoaderListener(rootContext)); 

     // Create the dispatcher servlet's Spring application context 
     AnnotationConfigWebApplicationContext webContext = new AnnotationConfigWebApplicationContext(); 
     webContext.register(MyServletContext.class); 

     // Register and map the dispatcher servlet 
     ServletRegistration.Dynamic dynamic = container.addServlet("dispatcher", new DispatcherServlet(webContext)); 
     dynamic.setLoadOnStartup(1); 
     dynamic.addMapping("/api/*"); 
    } 
} 

Problem -

ein. Meine Frühlingsbohnen werden zweimal initialisiert

b. Immer, wenn ich logj2.xml in meinen Ressourcen hinzufüge (mit maven), schlägt meine Bean-Erstellung fehl.

Ich bin neu dazu, bitte hilf mir.

Log4J - 2.5, Tomcat - 8.0.32

Dank!

Antwort

0

Ich habe es geschafft, es zu beheben. Es war nicht das Problem mit WebApplInitializer, sondern mit Spring Java Configurations-Dateien. Ich führte separate Konfigurationen für ApplicationContext und ServletContext. In ApplicationContext mit

hat den Trick gemacht.

In Servletkontext, habe ich -

@ComponentScan(basePackageClasses = AppContext.class)