답변:
다음과 같은 것을 사용할 수 있습니다.
<beans>
<bean id="myBean" class="..." init-method="init"/>
</beans>
Bean이 인스턴스화 될 때 "init"메소드를 호출합니다.
다른 답변에서 @PostConstruct 제안을 확장하려면 이것이 실제로 가장 좋은 해결책이라고 생각합니다.
<context:component-scan>
것도 작동하며 클래스 경로에 Spring이 아닌 큰 라이브러리가있는 경우 시작 시간을 줄이는 데 유용 할 수 있습니다.
참고 문헌에 설명 된 것처럼 고려해야 할 세 가지 접근법이 있습니다.
@PostConstruct
초기화 처리가 끝나면 호출하는 메소드가 필요한 클래스의 일부이기 때문에 실제로 정확하게 사용하는 것이 좋습니다 .
구현을 시도 했습니까 InitializingBean
? 당신이 쫓는 것과 똑같습니다.
단점은 bean이 Spring을 인식하지만 대부분의 응용 프로그램에서는 그렇게 나쁘지 않다는 것입니다.
애플리케이션 컨텍스트에 사용자 정의 BeanPostProcessor 를 배치하여 이를 수행 할 수 있습니다. 또는 Bean에서 Spring 인터페이스를 구현하는 것이 마음에 들지 않으면 InitializingBean 인터페이스 또는 "init-method"지시문 (동일한 링크)을 사용할 수 있습니다.
두 가지 접근 방식에 대한 혼란, 즉
@PostConstruct
과init-method="init"
개인적인 경험을 통해 (1) 서블릿 컨테이너에서만 작동하고 (2) 데스크탑 환경에서도 모든 환경에서 작동한다는 것을 깨달았습니다. 따라서 독립형 애플리케이션에서 Spring을 사용하려면 (2)를 사용하여 "초기화 후이 메소드를 호출해야합니다.
@PostConstruct
(Spring 기반 앱에서 사용되는 경우) 소유하는 Spring 컨텍스트의 수명과 관련이 있습니다. 이러한 컨텍스트는 모든 종류의 응용 프로그램에서 사용할 수 있습니다.