티스토리 뷰
ApplicationContext applicationContext = AnnotationConfigApplicationContext(AppConfig.class)
AppConfig 클래스를 생성할 때, @Configuration 어노테이션과 함께 사용되는 위의 구문이 있다.
위의 구문에서 ApplicationContext를 스프링 컨테이너라고 한다.
스프링 컨테이너는 스프링에서 사용하는 DI컨테이너로 보면 된다.
객체를 생성하고 관리하면서 의존관계를 연결해 주는 것이다.
또한 스프링 컨테이너를 싱글톤 레지스트리 라고도 하는데 싱글톤 레지스트리는 싱글톤 객체를 생성하고 관리하는 것을
싱글톤 레지스트리라고 한다.
스프링 컨테이너는 @Configuration이 붙은 것을(위에서는 AppConfig.class) 설정 정보로 사용한다.
(AnnotationConfigApplicationContext(AppConfig.class)가 바로 그 부분!)
이후 이 안에서 @Bean이라고 적혀있는 메소드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다.
이렇게 스프링 컨테이너에 등록된 객체를 빈이라고 한다.
추가로 빈의 이름들은 항상 다른 이름을 부여해야 한다!!
같은 이름들을 부여하면, 다른 빈이 무시되거나 기존 빈을 덮어버리는 오류가 발생한다.
참고로 빈을 호출하는 순서는 따로 정해져있지 않다.
@Configuration을 쓰는 이유는, 스프링 컨테이너는 자바 객체인 빈을 싱글톤으로 유지시키기 위해 사용한다.
만일 이 어노테이션을 쓰지 않으면 스프링 컨테이너에 빈을 등록시킬 수는 있으나 싱글톤을 유지시키지는 못한다.
//////////////////////
230106 내용 추가
@Bean만 사용해도 스프링 빈으로 등록되지만 의존관계 주입이 필요해서 메소드를 직접 호출할 때 싱글톤을 보장하지 않는다.
그냥 스프링 설정 정보는 항상 @Configuration을 사용하자
'spring' 카테고리의 다른 글
@ComponantScan / @Componant / @Autowired (0) | 2023.01.06 |
---|---|
@EnableWebSecurity (0) | 2023.01.03 |
테스트코드 작성시, assertThat().isEqualTo 와 isSameAs (0) | 2022.12.30 |
DI (0) | 2022.12.30 |
IoC (Spring에 국한된 것 아님!) (0) | 2022.12.30 |
- Total
- Today
- Yesterday
- pessimisticlock
- 부하테스트시나리오
- index
- Java
- 프로그래머스
- jmeter로그인
- EC2
- hackerrank
- 대규모더미데이터
- jmeter세션
- Redisson
- Redis
- jmeter토큰
- CheckedException
- 토큰
- Python
- 항해
- 동적크롤링
- Lock
- bankersRounding
- 인덱스
- Spring
- jmeter테스트
- jmeter쿠키
- 자바
- CorrectnessAndTheLoopInvariant
- 스프링faker
- jmeter부하테스트
- jwt
- jmeter시나리오
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |