Spring MVC - 2回ロードされたBean

Spring MVC – Beanが2回ロードされる

Spring MVC Webアプリケーション。SpringのすべてのBeanが2回ロードされていることに気付きました!?

package com.example.config.db;

@Configuration
public class MongoDevConfig {

    private final static Logger logger = LoggerFactory.getLogger(MongoDevConfig.class);

    @Bean
    MongoDbFactory mongoDbFactory() throws Exception {

        logger.debug("Init...... MongoDbFactory() in production mode!");
        //...
        return new new SimpleMongoDbFactory(mongo, "db");;

    }

}

アプリケーションの起動中:

2015-03-05 17:52:32 DEBUG c.m.config.MongoLiveConfig - Init...... MongoDbFactory() in production mode!
2015-03-05 17:52:32 DEBUG c.m.config.MongoLiveConfig - Init...... MongoDbFactory() in production mode!

1. スプリング構成

これがSpring MVCの構成です。

web.xml



    
        mvc-dispatcher
        
            org.springframework.web.servlet.DispatcherServlet
        
        1
    

    
        mvc-dispatcher
        /
    

    
        
            org.springframework.web.context.ContextLoaderListener
        
    

    
        contextConfigLocation
        /WEB-INF/mvc-dispatcher-servlet.xml
    

mvc-dispatcher-servlet.xml



    
    

2. 溶液

このSpring DispatcherServlet referenceを読んで、SpringがXMLファイルを取得する方法を理解してください。

DispatcherServletの初期化時に、Spring MVCはWebアプリケーションのWEB-INFディレクトリで[servlet-name] -servlet.xmlという名前のファイルを探し、…

上記のスプリング設定で:

  1. サーブレットmvc-dispatchermvc-dispatcher-servlet.xmlをロードします

  2. そして、リスナーContextLoaderListenerは `mvc-dispatcher-servlet.xml`を再度ロードします

これを修正するには、サーブレット名mvc-dispatcherの名前を別の名前に変更しました。

web.xml



    
    
        hello-dispatcher
        
            org.springframework.web.servlet.DispatcherServlet
        
        1
    

    
        hello-dispatcher
        /
    

つまり、SpringがSpring XML構成を2回取得しないようにしてください。