2020.04.24 TIL 스프링 - Bean Scope Detail with Annotation
Bean은 특별한 지정 값이 없으면 언제나 싱글톤으로 만들어진다. https://everupgrade.blogspot.com/2020/04/20200408-bean-lifecycle-annotation-bean.html 그런데 이 설정을 굳이 xml이 아닌 Bean Class에서 편하게 할 수 있다. ``` @Component @Scope( singleton(default) or prototype(매번 새로운 객체 생성) or global(용어는 확실치않음. flask g처럼 동작 등 ) public class Bean... (대충 bean 클래스) ``` init, destroy hook도 마찬가지이다. ``` @Component public class Bean... (대충 bean 클래스) @PostConstruct public String initMethod() {..대충 bean 함수} @PreDestroy public String destroyMethod() {..대충 bean 함수} ``` 주의사항 prototype은 PreDestroy Annotation이 동작하지 않는다. 다른 Scope들은 모두 관리가 되는데 prototype은 스프링 컨테이너가 생성까지만 관여하고 destroy는 관여하지 않는다. 만약 prototype bean에 destroy 훅을 달고 싶으면 Bean이 DisposableBean interface를 구현하고 해당 인터페이스가 제공하는 destroy() 함수를 구현해야한다고 한다. 참고소스: destroy-protoscope-bean-with-custom-processor.zip