코드 4-10은 싱글톤 빈 CacheSingletonBean이 바라보는 싱글톤 빈입니다.
코드 4-10 시동 순서를 지정
package com.devchronicles.singleton; import javax.annotation.PostConstruct; import javax.ejb.Singleton; import javax.ejb.Startup; import java.util.logging.Logger; @Startup @Singleton public class MyLoggingBean { private Logger logger; @PostConstruct public void start(){ logger = Logger.getLogger("MyGlobalLogger"); logger.info("음, 내가 먼저 시작합니다!!!"); } public void logInfo(String msg){ logger.info(msg); } }
빈이 정말 생성되어 생애 주기가 시작되었는지 @PostConstruct로 확인해봅시다. @PostConstruct를 붙인 메서드는 의존체 주입이 모두 끝난 후 비즈니스 메서드를 최초로 호출하기 전, 새로 생성한 빈에서 실행됩니다. 물론 실제론 다른 빈 안에서 싱글톤 빈이 필요한 경우가 더 많겠죠. 꼭 싱글톤이어야 하는 이유와 EJB 통합 및 접근 등은 뒷장에서 다시 이야기합니다.