Spring Bean 의 타입. Feat. 싱글톤과 프로토

Gi Lick·2023년 5월 3일
0
post-thumbnail

Spring의 Bean의 경우 Scope 타입을 2가지로 지정할 수 있다.
따로 명시를 하지 않으면 싱글톤 타입으로 지정이 가능하고, 따로 명시하면 프로토 타입으로 명시가 가능하다.

아래와 같은 Bean이 있다고 가정을 해보자.

아래와 같은 테스트를 진행하면

아주 잘 통과하는 것을 우리는 볼 수 있다.

메모리 값도 똑같은 것을 볼 수 있다.

하지만 아래와 같이

@Scope(”prototype”)을 붙인 후 테스트코드를 실행하면

아래와 같이 테스트가 실패하는 것을 볼 수 있는데

이렇게 되는 이유는 Spring이 Bean을
싱글톤 (하나의 유일 객체를 사용할 지) 프로토타입( 빈을 호출 할 때 마다 새로운 객체를 생성할 지) 두 타입으로 나누기 때문이다.

Scope 어노테이션을 들어가 살펴보면 아래와 같은 상수 두 가지를 볼 수 있다.

이 상수는 아래와 같이 String으로 지정되어 있는 것을 볼 수 있다.

싱글톤 타입으로 사용한다면 이전에 변경한 값이 변경되지 않는다는 단점이 있다.

아래와 이 testInt의 값을 증가시키는 메소드와, 출력하는 메소드가 있다고 가정하자.

그래고 아래와 같은 테스트 코드를 실행한다.

그렇다면 결과는??

여러분들이 생각하시는대로

testBean1의 int와 testBean2의 int가 둘 다 1로 나오게 된다.
이는 싱글톤 방식으로 하나의 객체를 사용하기에 발생하는 일이다.

반대로 프로토 타입으로 바꾼다면

다른 객체이기 때문에 1, 0 다르게 표시되는것을 볼 수 있다.
스프링 Bean을 사용할 때에는 이러한 점을 주의해서 사용해야 한다.

**수정해야 하거나 제가 추가적으로 공부해야 하는 부분이 있으면 알려주세요...!

끝까지 봐주셔서 너무 감사드립니다 (__)**

profile
신입 개발자!@#$%^&*(

0개의 댓글