반응형
목차
@Configuration
이 어노테이션을 클래스에 붙이면 해당 클래스를 스프링 설정 클래스로 등록한다.
@Bean 빈
스프링이 생성하는 객체를 빈이라고 부른다.
@Bean을 메서드에 붙이면 해당 메서드가 생성한 객체를 스프링이 관리하는 빈 객체로 등록한다.
@Configuration //AppContext.java를 스프링 설정 클래스로 등록한다
public class AppContext {
@Bean
public Greeter greeter(){
Greeter greeter = new Greeter();
greeter.setFormat("%s, 안녕하세요.");
return greeter;
}
}
Greeter타입이고, "greeter" 라는 이름의 Bean이 스프링 컨테이너에 등록된다.
ApplicationContext = Spring Container
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class);
//어노테이션 기반의 설정정보를 읽어오기
ApplicationContext ctx = new GenericXmlApplicationContext(AppContext.xml);
//XML기반의 설정정보를 읽어오기
어노테이션, XML기반의 설정정보를 읽어와서 빈 객체를 생성하고 관리하는 Context를 가져온다.
어노테이션기반을 바탕으로 설명하면, AppContext에 정의한 @Bean을 읽어와 "greeter"객체를 생성하고 초기화한다.
ApplicationContext는 Bean객체의 생성, 초기화, 보관, 제거 등을 역할을 맡고있다.
=> 객체를 관리하는 것을 Container라고도 부른다.
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class);
Greeter greeter1 = ctx.getBean("greeter", Greeter.class);
//스프링 컨테이너에서 Gretter.class타입이고, 이름이 greeter 빈을 가져온다
Greeter greeter2 = ctx.getBean("greeter", Greeter.class);
Greeter greeter3 = new Greeter();
Greeter greeter4 = new Greeter();
System.out.println(greeter1 == greeter2); //true
System.out.println(greeter1 == greeter3); //false
System.out.println(greeter3 == greeter4); //false
ctx.close();
}
}
greeter1과 greeter2는 같은 주소를 가지고 있다. = 같은 객체이다.
greeter3와 greeter4는 다른 주소를 가지고 있다. = 다른 객체이다.
스프링은 컨테이너에 등록된 Bean을 기본적으로 1개만 생성해준다. (싱글톤)
BeanFactory
빈 생성과 검색에 대한 기능을 정의하고있다.
ApplicationContext
BeanFactory를 상속받아서 더 편리하게 빈을 관리할 수 있도록 도와준다.
+ 메시지, 환경변수 등을 처리하는 편리기능을 제공해준다.
반응형
'Backend' 카테고리의 다른 글
Spring DI(의존주입), @Autowired (의존 자동주입) (0) | 2022.04.02 |
---|---|
Spring DI(의존주입), Container(객체 조립) (0) | 2022.03.28 |
자바, Spring Boot로 크롤링하기 - Selenium 이용 (동적페이지), 속도 개선 방법 (0) | 2022.03.08 |
자바, Spring Boot로 크롤링하기 - Jsoup 이용 (정적페이지) (0) | 2022.03.07 |
[Spring Security] OAuth 카카오 로그인하기 (0) | 2022.02.23 |