스프링 IoC 컨테이너의 역할
- 빈 인스턴스 생성
- 의존 관계 설정
- 빈 제공
ApplicationContext
- ClassPathXmlApplicationContext (XML)
<bean id="bookService"
class="me.test.test~.BookService">
<property name="bookRepository" ref="bookRepository"/>
</bean>
property에 추가해서 ref에 입히면 된다. name은 Setter에서 가져왔고, ref는 다른 bean의 id 값을 참조해서 가져온다.
위와 같이 ClassPathXmlApplicationContext에서 사용하는 configLocation은 기존에 만들어줬던 Bean 설정 xml 파일의 경로를 설정해준다. 그리고 ApplicationContext에서 꺼내 온 다음 context로 Bean들을 getBean으로 꺼내서 사용할 수 있다.
- AnnotationConfigApplicationContext (Java)
<context:component-scan base-package="me.test~.springapplicationcontext"/>
위와 같이 base-package 에서 부터 빈을 스캐닝해서 등록을 하겠다는 뜻. 해당 선언이 적혀 진 xml을 읽어서 component-scan 기능을 사용함. 그리고 빈 들을 해당 base-package 이하에서 Annotaion을 스캐닝을 해서 등록을 해주겠다는 뜻.
- @Component
- @Configuration
- ApplicationConfig 클래스 생성
ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfig.class);
위와 같이 ApplicationConfig에 설정 된 빈들을 ApplicationContext로 사용할 수 있다.
- @ComponentScan 방식
- @Repository
- @Service
- @Autowired
basePackageClasses에서 선언한 DemoApplication.class(해당 Application의 클래스가 위치 한 곳 부터) 특정 Annotation들을 찾아서 빈으로 등록 해라.
하지만 위와 같이 @SpringBootApplication을 설정해 주면, 방금 앞서서 설정 해준 @ComponentScan 과 @Configuration 이 이미 선언되어 있기 때문에 ApplicationConfig 클래스가 필요가 없어진다. -> Spring Boot만...
'Spring > Spring Web MVC' 카테고리의 다른 글
@Component와 @ComponentScan (2) | 2020.11.20 |
---|---|
@Autowired (0) | 2020.11.19 |
스프링 IoC 컨테이너와 빈 (0) | 2020.11.19 |
Dispatcher-servlet.xml (0) | 2020.10.14 |
Spring MVC란 (0) | 2020.10.14 |