
bean scope는 singleton의 패턴을 가집니다. singleton은 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴하는 디자인 패턴을 말합니다.
spring scope에서의 singleton은 spring 컨테이너에서 같은 이름의 bean은 하나만 존재하는 것을 말합니다. 디자인 패턴과 다르게 같은 클래스에서 다른 이름을 갖는 스프링 빈이 존재가 가능합니다.
즉, <bean> 엘리먼트에서 선언한 id, name 별로 객체가 관리된다는 의미입니다. 이로써 class 속성이 동일한 bean이 여러개 존재 할 수 있습니다.

스프링 빈 scope의 기본값은 singleton입니다. <bean> 엘리먼트에서 선언한 id, name 별로 객체가 관리되며 class 속성이 동일한 bean이 여러개 존재 할 수 있습니다. prototype은 DL을 할 때 마다 스프링 컨테이너가 새로운 스프링 빈 객체를 생성하여 리턴하는 것입니다. singleton 처럼 한번 생성해 놓고 재활용 하지 않습니다.

scope 속성을 지정하지 않았으므로 singleton이며 boardRepository라는 스프링 빈은 해당 스프링 컨테이너에서 유일합니다.

동일한 빈을 주입받아 동일한 객체인지 확인하는 테스트 입니다.


동일한 빈을 주입받은것은 같으며 동일한 클래스라도 다른 빈을 주입받은것은 다릅니다. 또한 prototype 설정된것은 주입될때마다 서로다른 빈이 주입됩니다.


스프링 빈 속성인 lazy-init 에 대해서 알아보겠습니다. lazy-init은 빈 생성 시기를 결정합니다. 빈이 필요해지는 시점에 스프링 컨테이너가 해당 스프링빈을 생성합니다. default는 스프링빈이 만들어지는 시점에서 모든 스프링 빈을 생성합니다. 스프링 빈의 갯수가 많아 지면 server 가 start될 때 스프링 빈이 초기화 되는데 시간이 지연됩니다. 만약 lazy-init 속성을 true로 설정 할 경우에는 해당 빈이 필요할 때 생성됩니다. 이는 스프링 컨테이너 생성시 초기화 시간이 단축되는 효과를 가져옵니다.
Oracle에서 업데이트를 하고 commit이나 rollback을 하지 않으면 row level locking이 걸려 있기 때문에 다른곳에서 작업이 불가능합니다. 트랜잭션이 끝나지 않았기 때문입니다. 그 다음에 이용하는 select 쿼리 등이 트랜잭션을 끝내주는 역할을 합니다.

Collection.xml을 통해 collection bean을 생성하는 예제입니다. list, map, properties, set의 형태를 살펴볼 수 있습니다.

Collection bean이 제대로 생성되었는지 Junit Test를 통하여 알아보는 예제입니다.


property 파일을 이용한 설정방법입니다. db의 로그인 정보를 property로 설정하고 이를 빈으로 주입받아 사용하기위해 설정하는것입니다.

Test를 통해 제대로 주입받는지 확인할 수 있습니다.

applicationContext bean 라이프 사이클입니다. 빈 객체를 생성하고 초기화 에서 소멸까지의 과정입니다.

'Web Programming > SPRING' 카테고리의 다른 글
[SPRING] 3-2. 타입변환 (0) | 2021.10.08 |
---|---|
[SPRING] 3-1. Annotation-based 빈 등록 및 의존관계 설정 (0) | 2021.10.06 |
[SPRING] 2-1. DI를 이용한 객체 생성 (3) (0) | 2021.10.02 |
[SPRING] 2-1. DI를 이용한 객체 생성 (2) (0) | 2021.09.22 |
[SPRING] 2-1. DI를 이용한 객체 생성 (1) (0) | 2021.09.11 |