본문 바로가기
Spring|Spring-boot

[spring] @Configuration

by oncerun 2020. 6. 17.
반응형

@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

댓글