빈 초기화 완료 후 메서드 호출 방법
Application Context 로드 시 빈에 있는 (비정적) 메서드를 한 번만 호출해야 하는 사용 사례가 있습니다.Method를 사용해도 될까요?이것에 대해 FactoryBean을 호출하고 있습니까?아니면 더 나은 해결책이 있을까요?
참고로 Config Context Loader Listener를 사용하여 웹 응용 프로그램에서 응용 프로그램콘텍스트를 로드합니다.또한 빈 A가 인스턴스화되면 메서드 A()를 한 번만 호출하면 됩니다.
어떻게 하면 잘할 수 있을까요?
를 확장하려면@PostConstruct제 생각에는 이게 정말 최선의 해결책입니다.
- Spring API에서 코드를 분리한 상태로 유지합니다.
@PostConstruct인javax.*) - 이것은 빈을 초기화하기 위해 호출해야 하는 것으로서 당신의 init 메서드에 주석을 붙입니다.
- spring bean 정의에 init-method Atribut을 추가할 필요가 없습니다.스프링에서는 자동으로 메서드가 호출됩니다(어쨌든 컨텍스트 내의 다른 곳에 annotation-config 옵션을 등록하고 있다고 가정합니다).
다음과 같은 것을 사용할 수 있습니다.
<beans>
<bean id="myBean" class="..." init-method="init"/>
</beans>
이렇게 하면 콩이 인스턴스화되면 "init" 메서드가 호출됩니다.
참고 자료에서 설명한 바와 같이 고려해야 할 세 가지 접근법이 있습니다.
init-method 애트리뷰트 사용
장점:
- 인터페이스를 실장하기 위해서 bean은 필요 없습니다.
단점:
- bean이 올바르게 설정되어 있는지 확인하기 위해 구축 후 이 방법이 필요하다는 것은 소스 코드에 즉시 표시되지 않습니다.
Initializing Bean 구현
장점:
- init-method를 지정하거나 구성 요소 스캔/주석 처리를 켤 필요가 없습니다.
- 라이브러리와 함께 제공되는 콩에 적합합니다.이 라이브러리를 사용하는 애플리케이션이 콩의 라이프 사이클에 관여하지 않도록 합니다.
단점:
- init-method 접근법보다 더 침습적입니다.
JSR-250 @PostConstruct 라이프 사이클 주석 사용
장점:
- 컴포넌트 스캔을 사용하여 콩을 자동 검출할 때 편리합니다.
- 초기화에 특정 방법을 사용하는 것을 명확히 한다.의도는 코드에 가깝습니다.
단점:
- 초기화는 더 이상 구성에서 중앙에서 지정되지 않습니다.
- 주석 처리를 켜야 합니다(가끔 잊어버릴 수 있음).
구현해 보셨습니까?당신이 찾고 있는 것과 정확히 일치해요.
단점은 콩이 스프링을 인식하게 된다는 것입니다만, 대부분의 어플리케이션에서는 그다지 나쁘지 않습니다.
커스텀 Bean Post Processor를 애플리케이션 컨텍스트에 도입할 수 있습니다.또는 Spring 인터페이스를 bean에 실장해도 괜찮다면 InitializingBean 인터페이스 또는 "init-method" 디렉티브(같은 링크)를 사용할 수 있습니다.
두 가지 접근법에 대한 혼동을 추가로 해소하기 위해, 즉
@PostConstruct...init-method="init"
개인적인 경험으로 (1)사용은 서블릿 컨테이너에서만 가능한 반면 (2)데스크탑 어플리케이션에서도 모든 환경에서 사용할 수 있다는 것을 알게 되었습니다.따라서 스탠드아론 어플리케이션에서 Spring을 사용하는 경우 (2)를 사용하여 "초기화 후 이 메서드를 호출합니다.
언급URL : https://stackoverflow.com/questions/1088550/how-to-call-a-method-after-bean-initialization-is-complete
'programing' 카테고리의 다른 글
| "SELECT FOR UPDATE"는 행이 없을 때 다른 연결을 삽입할 수 없도록 합니까? (0) | 2023.03.10 |
|---|---|
| Angular를 사용하여 형식 유효성 검사에서 두 입력 값 비교JS (0) | 2023.03.10 |
| 리액트 네이티브로 함수가 가득한 도우미 파일을 작성하려면 어떻게 해야 합니까? (0) | 2023.03.10 |
| SQL 순서 위치 표기법을 사용하는 이점 (0) | 2023.03.10 |
| 오류: 'types'는 .ts 파일에서만 사용할 수 있습니다. - @ts-check를 사용하는 Visual Studio 코드 (0) | 2023.03.10 |