2016-10-10 5 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> 
을 포함하는 전쟁 파일이

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> 

웹 컨테이너에 war 파일을 배포 할 때 DataLoader의 init 메서드를 호출해야합니다. 그러나 호출되지 않습니다.

bean 구성에서 init-method = "init"로 인해 bean이 초기화 된 후 init 메소드가 호출되고 lazy-init = "false"로 인해 bean이 배치시 초기화된다고 생각했습니다. .

내가 뭘 잘못하고 있니?

답변

0

빈이 초기화되고 있습니까? DataLoader 클래스를 InitializingBean으로 확장하고 initafterPropertiesSet으로 바꿔야 할 수 있습니다. 그러나 더 현대적인 방법은 빈에 대한 XML 설정을 삭제하고 다음과 같이 클래스를 변경하는 것입니다.

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

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