본문 바로가기

bean4

[Spring] bean scope prototype TroubleShooting (feat, connection) 빈 생명주기에 관해서 그래도 기본은 알고있다고 생각했는데 큰 오산이었다. 운영에 반영을 했는데 몇 일 뒤 최대 Connection을 초과해서 장애가 발생하였다. 원인은 Connection close가 되지 않아서였다. AS-IS TO-BE 왜?? 소스를 어떻게 짰길래?? 샘플 소스로 확인해보자. AServiceImpl는 매번 새로운 커넥션을 맺고 사용이 끝나면 자원을 close 하는 역할을 하고 있다. common.xml에 Impl 클래스를 prototype으로 빈을 등록해놓았다. 그리고 다른 클래스에서 매번 새로운 인스턴스로 사용하기 위해서 beanFactory에서 getBean을 통해 직접 해당 클래스를 가져왔다. @Autowired private AutowireCapableBeanFactory be.. 2021. 1. 19.
[Spring] Bean LifeCycle 솔직하게 말해서 기존에는 LifeCycle이 왜 중요한지 체감을 못했다. 단순히 중요하다니까 보는정도? 하지만, JPA를 공부하다보니 Entity의 LifeCycle이 엄청 중요했다. 그래서 LifeCycle에 대한 공부를 하려한다. Spring Bean의 생명주기 Spring Application 시작 Bean 설정파일 초기화 Config 파일이나 web.xml을 사용해 Bean으로 등록할 대상을 찾아 기본 생성자를 호출하여 Bean에 등록한다. Bean으로 등록할 객체 초기화 //@Component를 사용 할 경우 @PostConstruct public void init() { System.out.println("Init"); } //@Bean을 사용 할 경우 @Bean(initMethod = "in.. 2020. 5. 11.
@Bean vs @Component @Component와 @Bean 둘 다 Spring Container에 Bean을 등록하도록 하는 어노테이션으로 알고있다. 그렇다면 둘의 차이점은 뭘까? 궁금해졌다. @Bean 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우 사용된다. (ObjectMapper의 경우 ObjectMapper Class에 @Component를 선언할 수 없으니, ObjectMapper의 인스턴스를 생성하는 메소드를 만들고 해당 메소드에 @Bean을 선언해 등록한다.) 메소드로 return 되는 객체를 Bean으로 등록해준다. ObjectMapper란? 기본 POJO 또는 범용 JSON Tree Model에서 JSON을 읽고 쓰는 기능과 변환 수행을 위한 기능을 제공한다. 또한 다양한 스타일의 .. 2020. 4. 8.
스프링 기본 개념 정리 스프링 기본 개념 정리SpringFramework는 웹 프레임 워크가 아니다.그렇다면?Java 기반의 프레임워크로 여러 모듈로 구성되어 있는데, 이중 웹 어플리케이션을 만들려고 등장한 것이 SpringMVC 모듈이다.SpringMVC 사용할 때 Servlet Container와 Spring Container라는 용어를 자주 볼 수 있다. Servlet ContainerServlet 저장소라고 보면 된다.Java로 웹을 개발하기 위해 여러 Servlet 들이 필요하게 되는데, Servlet들의 생명주기, 멀티쓰레드 지원 등을 해주는 것이 Servlet Container다대표적으로 Tomcat이 해당된다.Spring MVC 역시 Servlet Container가 관리하고 있는 Servlet이다.만약 Serv.. 2019. 3. 15.