앞서 DI를 설명하면서 XML으로 빈을 구성해 컨테이너를 만드는 방법에 대해 간단히 설명한 바 있다.
기본적으로 XML파일로 컨테이너를 구성할 때는 XML파일에 Bean 태그를 통해 컨테이너 요소들을 설정하고,
컨테이너를 만들때는 GenericXmlApplication 객체를 통해 XML파일을 불러와 컨테이너를 구성한다.
- GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:config.xml");
- 컨테이너를 구성했으면 getBeans()메소드를 사용해 xml에서 빈으로 구성해놓은 클래스들을 가져온다.
(이때, getBeans 메소드의 파라미터는 xml 파일내의 Bean 태그의 id와 같아야 한다.)
- getBean으로 Bean을 갖고오는데 성공했다면 Bean 클래스들의 실행하고 싶은 메소드들을 실행후,
close를 통해 닫아준다. (ctx.close())
-------------------------------------------------------------------------------------------------------
반면 Annotation 방식을 사용해 컨테이너를 구성하는 방법도 있다.
Annotaion 방식은 XML이 파일이 필요없고, 해당하는 컨테이너로 만들고 싶은 클래스 위에 @Configuration을 붙여주면 된다.
1
2
3
4
5
6
7
8
|
@Configuration
public class a {
@Bean
public User user1() {
return new User("aaaaa", "1234");
}
|
(@Configuration을 사용해 Container를 구성한다.)
Container 내에는 @Bean을 사용할 수 있는데. @Bean의 역할은 빈 객체를 생성하는 메소드에 사용되어 메서드의 리턴 값을 빈 객체로 사용할 수 있다.
위의 예에서는 user1() 메서드가 생성하는 객체를 빈 객체로 사용하고 메소드 이름인 user1을 빈 객체의 이름으로 사용한다.
메인에서 사용할때는 XML때와 달리 AnnotationConfigApplicationContext 객체를 사용해 불러올 수 있다.
1
2
|
AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext(Config.class);
|
두가지 방식의 특징은 다음과 같다.
* XML 설정
- 설정 정보를 변경할 때에는 XML만 변경하면 된다.
- 많은 프레임워크/라이브러리 XML 스키마를 이용한 설정의 편리함을 지원한다.
- (IDE의 코드 자동 완성 기능이 빈약하면) XML 작성 과정이 다소 번거롭다.
- 코드를 실행해야 설정 정보 오류를 확인할 수 있다.
* Annotation 방식
- 컴파일러의 도움을 받기 때문에, 오타 등의 설정 정보 오류를 미리 알 수 있다.
- 자바 코드이기 때문에 IDE가 제공하는 코드 자동 완성 기능의 도움을 받을 수 있다.
- 설정 정보를 변경하려면 자바 코드를 재컴파일해주어야 한다.
- XML 스키마 기반의 설정을 지원하는 프레임워크/라이브러리 중 아직 자바 기반의 편리한 설정을 지원하지 않은 경우가 있다.
'Spring Framework' 카테고리의 다른 글
스프링(Spring Framework)이란? (0) | 2020.02.27 |
---|