2017-12-13 8 views
0

작동하는지 확실하지 않습니다. 이전 배포시 생성 된 사용자 .txt 파일을로드하는 프로젝트가 있습니다. 문제는 Applicationcontext가로드되지 않았 음을, 그리고 @Autowired되는 파일을로드하는 방법부터, NullPointerException를 throw이 내가 그것을 해결하기 위해 노력 않은 것입니다 : 이것은 web.xml을위한이Applicationcontext가로드 된 후 리스너 스프링 웹을 추가하십시오.

import org.springframework.context.ApplicationEvent; 
import org.springframework.context.ApplicationListener; 
import org.springframework.stereotype.Component; 

@Component 
public class TestListener implements ApplicationListener{ 

    @Override 
    public void onApplicationEvent(ApplicationEvent event) { 
    } 
} 

입니다 프로젝트와 청취자 :

<listener> 
    <listener-class>TestListener</listener-class> 
</listener> 

점은이 올바른지, 리스너를 만드는 것입니다?

+1

어떻게 "Applicationcontext가로드되지 않았습니까?" "NullPointerException"이 무엇입니까? 이 스프링 버전은 무엇입니까? 당신은 이것을 보았습니까 : https://spring.io/blog/2015/02/11/better-application-events-in-spring-framework-4-2? – daniu

+0

autowired 메서드가 호출되고 컨텍스트가 메서드가 실행되는 시점에서 null 인 경우 응용 프로그램의 컨텍스트가로드되지 않았습니다. 스프링을 사용하고 있습니다. 4.0.5 –

+0

스택 추적을 게시해야합니다. –

답변

0

두 가지 옵션이 마음에 와서 :

InitializingBean 표시 : 컨텍스트가로드 된 후

@Component 
public class FileLoader implements InitializingBean { 
    public void afterPropertiesSet() throws Exception { 
     // load file 
    } 
} 

이가 전화를받을 것이다.

@PostConstruct :

@Component 
public UserService { 
    private List<Customer> registeredCustomers; 
    // ... 

    @PostConstruct 
    public void loadPreviouslyRegisteredUsers() { 
     registeredCustomers = loadFile(); 
    } 
} 

내가이 더 좋아; @PostConstruct 메소드는 서비스 bean이 작성된 후에 호출되며, 이는 파일을로드하는 가장 좋은 기회입니다.

죄송합니다. ApplicationContextListener에 대한 귀하의 질문에 실제로 답변을 드리지는 못하지만, 귀하가하고자하는 일에 해당하는 것으로 들립니다.

+0

요점은 다음과 같습니다. 청취자를 생성하고,'ApplicationContext'가로드 된 후에 불이 들지 않는지 확인하십시오. 귀하의 답변 주셔서 감사합니다! –