2016-10-10 1 views
0

は、私は次の

春豆

public class DataLoader { 
    private static Logger log = Logger.getLogger(DataLoader.class.getName()); 
    public void init() { 
     log.info("DataLoader init called"); 
    } 
} 

applicationContext.xmlを

<bean id="dataLoader" class="com.example.DataLoader" 
    init-method="init" lazy-init="false"> 
</bean> 
を含んでwarファイルを持っています

web.xml

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:WEB-INF/applicationContext.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

Webコンテナにwarファイルをデプロイするときに、DataLoaderのinitメソッドを呼び出すようにします。しかし、それは呼ばれません。

私は、Bean設定でinit-method = "init"のためにBeanが初期化された後に呼び出され、lazy-init = "false"のためにBeanがデプロイ時に初期化されると考えました。 。

私は間違っていますか?

答えて

0

あなたのBeanがまったく初期化されていますか? DataLoaderクラスをInitializingBeanに拡張し、initafterPropertiesSetと名前を変更することをお勧めします。しかしこれを行うもっと現代的な方法は、BeanのXML設定を削除して、このようにクラスを変更することです:

@Component 
public class DataLoader { 
    private static Logger log = Logger.getLogger(DataLoader.class.getName()); 

    @PostConstruct 
    public void init() { 
     log.info("DataLoader init called"); 
    } 
}