[Spring5 입문] Annotation, Singleton, AnnotationConfigApplicationContext
2021. 7. 21. 20:44ㆍCSE/Spring
** 스프링의 핵심 기능은 객체를 생성하고 초기화 하는 것!
1. @Configuration, @Bean 애노테이션
- @Configuration은 클래스 앞에 붙여서 사용하는데, 해당 클래스를 스프링 설정 클래스로 지정한다
- @Bean은 메소드앞에 붙여서 사용하는데, 해당 메소드는 객체를 생성하고 알맞게 초기화 해야 한다.
=> 예시는 AppContext.java를 통해서 확인 (밑에 있음)
2. Singleton
: 기본적으로 스프링은 한 개의 빈 객체만을 생성하며, 이 때 빈 객체는 '싱글톤 범위를 갖는다'라고 표현함
: Singleton == '단일 객체'
3. AnnotationConfigApplicationContext
: 자바 Annotation을 이용한 클래스로부터 객체 설정 정보를 가져와서 빈 객체를 생성 및 관리함
: getBean() 메소드를 통해 생성한 빈 객체를 검색할 때 사용됨
4. 사용 예시 코드
- Greeter.java
public class Greeter {
public String format;
public String greet(String guest) {
return String.format(format, guest);
}
public void setFormat(String format) {
this.format = format;
}
}
- AppContext.java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppContext {
@Bean
public Greeter greeter() {
Greeter g = new Greeter();
g.setFormat("%s, 안녕하세요!");
return g;
}
}
- Main.java
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class);
Greeter g1 = ctx.getBean("greeter", Greeter.class);
Greeter g2 = ctx.getBean("greeter", Greeter.class);
String str = g1.greet("스프링");
System.out.println(str); //스프링, 안녕하세요!
System.out.println("(g1 == g2) = " + (g1==g2)); //(g1 == g2) = True
ctx.close();
}
}
'CSE > Spring' 카테고리의 다른 글
[Spring5입문] AOP 프로그래밍 기초 (0) | 2021.08.09 |
---|---|
[Spring5입문] 빈 라이프사이클과 범위 (0) | 2021.08.09 |
[Spring5입문] 컴포넌트 스캔 (0) | 2021.08.08 |
[Spring5입문] 의존 자동 주입 (0) | 2021.08.04 |
[Spring5입문] 스프링 DI (0) | 2021.08.03 |