싱글톤 컨테이너에 대하여 알아보았다.!

 

스프링 컨테이너는 싱글톤 패턴의 문제점을 해결하면서, 객체 인스턴스를 싱글톤으로

관리한다.

지금까지 써온 스프링 빈이 바로 싱글톤으로 관리되는 빈이다.

 

싱글톤 컨테이너

 

스프링 컨테이너는 싱글톤 패턴을 적용하지 않아도, 객체 인스턴스를 싱글톤으로 관리한다.

- 이전에 공부했던 컨테이너 과정을 보니 컨테이너는 객체를 하나만 생성해서 관리한다.

 

스프링 컨테이너는 싱글톤 컨테이너의 역할을 한다. 이렇게 싱글톤 객체를 생성하고 관리하는 기능을 싱글톤 레지스트리라 한다.

 

스프링 컨테이너의 이런 기능 덕분에 싱글톤 패턴의 모든 단점을 해결하면서 객체를 싱글톤으로 유지할 수 있다.

-싱글톤 패턴을 위한 지저분한 코드가 들어가지 않아도 된다.

-DIP, OCP, 테스트, private 생성자로부터 자유롭게 싱글톤을 사용할 수 있다.

 

    @Test
    @DisplayName("스프링 컨테이너와 싱글톤")
    void springContainer(){
        ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);

        MemberService memberService1 = ac.getBean("memberService",MemberService.class);
        MemberService memberService2 = ac.getBean("memberService",MemberService.class);

        System.out.println("memberService1 = " + memberService1);
        System.out.println("memberService2 = " + memberService2);

        assertThat(memberService1).isSameAs(memberService2);
    }

 실제로 같은 객체를 사용하는지 확인하기 위한 테스트 코드를 작성해보았다.

 

프린트 문을 통해서 나온 값이 같다는것을 확인할 수 있었다.

싱글톤 패턴과 관련있는 코드들이 하나도 없어도 싱글톤 패턴이 적용되있는 것을 알 수 있었다.

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/lecture/55363?speed=0.75&tab=note&mm=close

스프링 컨테이너 덕분에 고객의 요청이 올때마다 객체를 생성하는 것이 아니라 이미 만들어진 객체를

공유하여 효율적으로 재사용 할 수 있다.

 

 

+ Recent posts