@Configuration 애노테이션은 해당 클래스를 스프링 설정 클래스로 지정합니다.
@Configuration
public class AppContext {
@Bean
public Hello hi(){
Hello ho = new Hello();
ho.setHi();
return ho;
}
}
스프링은 객체를 생성하고 초기화하는 기능을 제공하는데 , 위의 코드는 한 개 객체를 생성하고 초기화하는 설정을 담고 있다.
스프링이 생성하는 객체를 빈(Bean) 객체라고 부르는데, 이 빈 객체에 대한 정보를 담고 있는 메서드가 hi() 메서드이다.
@Bean 애노테이션을 메서드에 붙이면 해당 메서드가 생성한 객체를 스프링이 관리하는 빈 객체로 등록한다.
여기서 애노테이션을 붙인 메서드의 이름은 빈 객체를 구분할 때 사용합니다.
이제 빈 객체를 생성했다면 스프링이 제공하는 클래스를 이용해 사용해봅니다.
@Configuration
public class BrandMvcConfiguration implements WebMvcConfigurer{
@Bean
public String hi() {
return "hello Spring";
}
}
-----------------------------------------------------------------------
AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext(BrandMvcConfiguration.class);
String value = ctx.getBean("hi",String.class);
System.out.println(value);
설정 클래스의 생성자를 파라미터로 전달해 설정 클래스에 정의한 빈(Bean) 설정 정보를 읽어와 객체를 생성하고 초기화합니다.
getBean() 메서드는 자바 설정을 읽어와 생성한 빈(Bean) 객체를 검색할 때 사용한다. 빈객체의 이름과 빈 객체의 타입을 파라미터 값으로 전달해준다.
따라서 ctx.getBean("hi", String.class);는 hi() 메서드의 리턴 값을 리턴합니다.
ApplicationContext(또는 BeanFactory)는 빈 객체의 생성, 초기화, 보관, 제거 등을 관리하고 있어서 ApplicationContext를 컨테이너(Container)라고도 부릅니다.
컨테이너에 담긴 빈 객체는 단일 객체입니다.
별로 설정을 하지 않을 경우 스프링은 한 개의 빈 객체만을 생성하며, 이때 빈 객체는 싱글톤 범위를 갖는다고 합니다.
'Spring|Spring-boot' 카테고리의 다른 글
[Spring] DI 설정 (0) | 2020.06.17 |
---|---|
[spring] 의존 주입 (0) | 2020.06.17 |
[Spring] Dependency Injection (xml) (0) | 2020.06.16 |
[Spring] IoC 컨테이너 (0) | 2020.06.15 |
[Spring] DI(Dependency Injection) (0) | 2020.06.15 |
댓글