IoC 컨테이너 2부 - ApplicationContext와 다양한 빈 설정 방법
참고문헌

스프링부트의 편리함
- web 선택 -> 관련 라이브러리들 의존성 관리
 


IoC 컨테이너 2부: ApplicationContext와 다양한 빈 설정 방법
스프링 IoC 컨테이너의 역할
- 빈 인스턴스 생성
 - 의존 관계 설정
 - 빈 제공
 
AppcliationContext 생성
- 설정파일을 xml로 설정할 때 : ClassPathXmlApplicationContext
 
ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
- 
    
설정파일을 java파일로 설정할 때 : AnnotationConfigApplicationContext
- 주입방식 1 : 함수호출
 
 -- 주입방식 2 : 파라미터로 받아서 넘겨주기
 - - 주입방식 3 : 의존성 주입을 configuraion에서 직접하지 않고, 서비스 로직에서 꺼내와서 주입
 
 


- 어노테이션 방식으로 설정을 읽어들일 때 : @ComponentScan
    
- @ComponentScan 사용
 - basePackage는 문자열로 입력해야 하므로 type safety 이슈가 있을 수 있음
 - basePackageClass : type safety함
 - 해당 클래스가 있는 위치에서부터 @Component 어노테이션이 붙은 클래스들을 모두 빈으로 등록해라.
 - @Service, @Repository 등은 @Component를 포함하고 있음
 
 


- (스프링부트, 앞선 내용들은 Spring에 해당하는 내용들) @SpringBootApplication 사용
    
- ApplicationContext를 자동으로 생성
 - @ComponentScan이 포함됨
 - @ComponentScan도 할 필요가 없어짐
 
 

빈 설정
- 빈 명세서
 - 빈에 대한 정의를 담고 있다.
    
- 이름
 - 클래스
 - 스코프
 - 생성자 아규먼트 (constructor)
 - 프로퍼트 (setter)
 - ..
 
 
컴포넌트 스캔
- 설정 방법
    
- XML 설정에서는 context:component-scan
 - 자바 설정에서 @ComponentScan
 
 - 특정 패키지 이하의 모든 클래스 중에 @Component 애노테이션을 사용한 클래스를 빈으로 자동으로 등록 해 줌.