1. @Configuration
- 해당 클래스가 일반적인 자바 클래스가 아닌 설정을 위한 클래스라는 것을 뜻함
- 이를 통해 xml에서 설정한 내용들을 어노테이션으로 추가할 수 있게 됨
2. @ComponentScan
<context:component-scan base-package="spring.di.ui, spring.di.entity"/>
위의 내용이 xml에 작성되어 해당 패키지 내부의 컴포넌트들을 빈 객체로 만들라는 주문이 있었다.
이를 @ComponentScan 어노테이션을 이용하면 아래와 같이 변경이 가능하다.(xml에서 위 구문은 삭제 가능)
@ComponentScan({"spring.di.ui","spring.di.entity"})
@Configuration
public class NewlecAppConfig{
}
만약 하나의 패키지만을 사용한다면 아래와 같이 사용한다.
@ComponentScan("spring.di.ui")
3. @Bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" ...>
<context:component-scan base-package="spring.di.ui, spring.di.entity"/>
<bean id="exam" class="spring.di.entity.NewlecExam"/>
</beans>
와 같은 내용을 @Bean을 사용하여 나타내면 아래와 같다.
@ComponentScan({"spring.di.ui","spring.di.entity"})
@Configuration
public class NewlecAppConfig{
@Bean
public Exam exam(){
return new NewlecExam();
}
}
주의할 점은 함수의 이름이 exam으로, 함수명이라고 생각말고 컨테이너에 담겼을 경우 객체의 이름으로 사용된다.
4. Application Context
1) ApplicationContext 생성하기
ApplicationContext context = new AnnotationConfigApplicationContext(NewlecAppConfig.class);
2) ApplicationContext 종류
ApplicaionContext ------ ClassPathXmlApplicationContext : xml 기반 설정
|--- FileSystemXmlApplicationContext : xml 기반 설정
|--- XmlWebApplicationContext : xml 기반 설정
|--- AnnotationConfigApplicationContext : Annotation 기반 설정
5 AnnotaionConfigAppliactionContext 설정 방법
1) 하나의 Annotation 설정 파일을 사용할 경우
public static void main(String[] args){
ApplicationContext ctx = new AnnotationConfigApplicationContext(NewlecAppConfig.class);
ExamConsole console = (ExamConsole) context.getBean("console");
consoel.print();
}
2) 한 개 그 이상의 Annotation 설정 파일을 사용할 경우
public static void main(String[] args){
ApplicationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(AppConfig.class, OtherConfig.class);
ctx.register(NewlecAppConfig.class);
ctx.refresh();
ExamConsole console = (ExamConsole) context.getBean("console");
consoel.print();
}
'뉴렉쳐 스프링 프레임워크 정리' 카테고리의 다른 글
[16강] 특화된 @Component 어노테이션(@Controller/@Service/@Repository) (0) | 2023.06.10 |
---|---|
[15강] 어노테이션을 이용한 객체 생성 (0) | 2023.06.10 |
[14강] @Autowired의 위치와 Required 옵션 (0) | 2023.06.10 |
[13강] @Autowired의 동작방식 이해와 @Qualifier 사용하기 (0) | 2023.06.10 |