본문 바로가기
유데미 스프링

싱글톤, 프로토타입

by hoshi03 2024. 3. 20.

• 자바 싱글톤과 스프링 싱글톤 차이

 

스프링 싱글톤은 스프링 IoC 컨테이너당 객체 인스턴스가 하나

자바 싱글톤은 JVM당 인스턴스가 하나

 

• 싱글톤과 프로토타입 차이

 

기본적으로 스프링에서 생성되는 빈들은 싱글톤이다

빈을 여러번 호출해도 같은 인스턴스를 가져온다

@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)

 

빈 위에 이렇게 Scope 어노테이션을 붙이면 프로토타입 객체로 생성되어서 빈을 가져올때마다 다른 인스턴스를 가져온다

 

@Component
class NormalClass{
}
@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
class PrototypeClass{
}

@Configuration
@ComponentScan
public class SingletonClass {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context
                = new AnnotationConfigApplicationContext(SingletonClass.class);

        System.out.println(context.getBean(PrototypeClass.class));
        System.out.println(context.getBean(PrototypeClass.class));
        System.out.println(context.getBean(PrototypeClass.class));

        System.out.println(context.getBean(NormalClass.class));
        System.out.println(context.getBean(NormalClass.class));
        System.out.println(context.getBean(NormalClass.class));
    }
}

 

프로토타입 객체는 매번 다른 인스턴스를 생성한다

 

사용자 정보가 유지되야하는 빈을 만들때는 프로토타입을 이용해서 사용자마다 다른 빈을 생성할 수 있다

'유데미 스프링' 카테고리의 다른 글

빈 관련 어노테이션  (0) 2024.03.20
PostConstruct, PreDestroy  (0) 2024.03.20
지연 초기화, 즉시 초기화  (0) 2024.03.20
스프링 용어 정리  (0) 2024.02.25
의존성 주입  (0) 2024.02.24