일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- union_find
- 큐
- BFS
- javascript
- JPA
- 스택
- dfs
- date
- NIO
- Calendar
- priority_queue
- 힙덤프
- CSS
- string
- GC로그수집
- set
- sql
- alter
- html
- Java
- scanner
- map
- deque
- 스프링부트
- spring boot
- 리소스모니터링
- math
- Properties
- Union-find
- List
- Today
- Total
매일 조금씩
[IoC 컨테이너와 빈] 2. ApplicationContext와 다양한 빈 설정 방법 본문
[IoC 컨테이너와 빈] 2. ApplicationContext와 다양한 빈 설정 방법
mezo 2024. 11. 3. 18:40
[전체 목차]
- IoC 컨테이너와 빈
- 스프링 IoC 컨테이너와 빈
- ApplicationContext와 다양한 빈 설정 방법
- Resource / Validation
- 데이터 바인딩
- SpEL
- 스프링 AOP
- Null-Safety
spring-boot-stater-web 의존성만 넣어 두면 우리가 애플리케이션을 만드는데 필요한 의존성들이 대부분 들어온다.
spring core, spring context, spring beans 이렇게 세개가 주요한 의존성들...
1. 스프링 IoC 컨테이너의 역할
- 빈 인스턴스 생성
- 의존 관계 설정
- 빈 제공
2. ApplicationContext
: BeanFactory의 확장판.
빈 관리 외에도 애플리케이션 이벤트, 국제화, 환경 설정, 애플리케이션 생명주기 관리 등 고급 기능을 지원
- ClassPathXmlApplicationContext (XML)
- AnnotaionConfigApplicationContext (Java)
3. 빈 설정
- 빈 명세서: 빈에 대한 정의를 담고있음
- 이름
- 클래스
- 스코프
- 생성자 아규먼트 (constructor)
- 프로퍼트 (setter)
- ..
4. 컴포넌트 스캔
- 설정 방법
- XML 설정에서는 context:component-scan
- 자바 설정에서 @ComponentScan
- 특정 패키지 이하의 모든 클래스 중에 @Component 어노테이션을 사용한 클래스를 빈으로 자동으로 등록해 줌.
5. 빈 설정 방법의 변천사
1) application.xml에 <bean ~ /> 추가하는 방식
원래 application.xml에 빈을 하나하나 으로 적어주고 했다.
ApplicationContext context = ClassPathXmlApplicationContext(application.xml)
2) application.xml에 <context:component-scan ~/> 쓰고,
@Component
등 빈 어노테이션 쓰는 방식
거기서 의존성도 적어주고 하는게 귀찮다~ 해서 나온게
application.xml에 context:component-scan~~/ 을 쓰고,
@Component
확장 받은 @Service
, @Repository
등을 쓰는 거다.
물론 이 어노테이션을 쓰면 의존성 주입은 @Autowired같은 어노테이션으로 해줘야한다.
xml에 bean을 하나하나 명시하지 않아도 component-scan만 써두면 그걸 사용해서 어노테이션들을 스캔해서 빈으로 등록하는 식으로 허용하는게 Java Spring 2.5부터 가능했던 기능이다.
3) Java 빈 설정 파일 쓰는 방식 (@Configuration
, @Bean
, @Autowired
)
근데 여기서 xml말고 java로 빈 설정 파일을 만들수 없을까? 해서 나온게 java 설정파일인 @Configuration
어노테이션이 붙은 자바 파일이다. 이안에서 @Bean
을 붙여가며 등록이 가능하다.
ApplicationContext context = AnnotationConfigApplicationContext(ApplicationConfig.class)
@Configuration
클래스 내에서 @Bean
으로 클래스를 빈으로 등록할때 그 코드 안에서 의존성 주입을 해주지 않아도,
해당 클래스 안에서 @Autowired
를 써도 의존성 주입이 된다.
4) Java 빈 설정 파일에 @Bean
말고 @ComponentScan
어노테이션 쓰는 방식
@Bean
으로 하나하나 해주는게 귀찮다
@Configuration
에 또 붙여주는 @ComponentScan
이 추가됨.
5) @SpringBootApplication
쓰는 방식
이 모든건 Spring 에 대한 얘기고,
Spring boot에선 이걸 편리하게 제공한다.
그게 @SpringBootApplication
이다.
@SpringBootApplication
만 애플리케이션 클래스 위에 붙어있다면,
우린 이 모든 작업(ApplicationContext 를 사용한 모든 빈설정 관련 코드)을 안 해놔도 다 포함된 격이 된다.
'Spring Framework > 스프링 프레임워크 핵심 기술' 카테고리의 다른 글
[IoC 컨테이너와 빈] 6. Environment 1부. 프로파일 (0) | 2024.11.17 |
---|---|
[IoC 컨테이너와 빈] 5. 빈의 스코프 (0) | 2024.11.06 |
[IoC 컨테이너와 빈] 4. @Component 와 컴포넌트 스캔 (1) | 2024.11.04 |
[IoC 컨테이너와 빈] 3. @Autowired (0) | 2024.11.03 |
[IoC 컨테이너와 빈] 1. 스프링 IoC 컨테이너와 빈 (0) | 2024.11.03 |