Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- ApplicationContext
- @Bean
- spring
- Singleton Container
- java
- 이클립스 워크스페이스 이름 표시
- embedded tomcat
- spring framework
- @Configuration
- 마스크 5부제
- Spring Framwork
- 마스크 구매
- 2020 정보처리기사
- KF 94 마스크 구매
- 이클립스 제목표시줄
- AnnotationConfigApplicationContext
- Bean Definition
- 코로나 정보처리기사
- 마스크 구매 사이트
- 마스크구입
- 역슬래시 자동생성
- 코로나 정보처리기사 필기 연기
- 마스크구입처
- 이클립스
- svn 수동 설치
- 정보처리기사 필기 연기
- Annotaion
- 약국 구매
- BeanFactory
- 정보처리기사 연기 코로나
Archives
- Today
- Total
paranjong
[Spring] @Configuration, @Bean 본문
스프링 컨테이너
//스프링 컨테이너 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
- ApplicationContext를 스프링 컨테이너라 한다.
- ApplicationContext는 인터페이스이다.
- 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설저 클래스로 만들 수 있다.
- 어노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 예시는 아래와 같다.
//자바 설정 클래스 기반 스프링 컨테이너
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
- AnnotationConfigApplicationContext 클래스는 ApplicationContext 인터페이스의 구현체이다.
- 스프링 컨테이너 생성
![](https://blog.kakaocdn.net/dn/dPMf8x/btrMUk6uUaH/VhHZCCAnIM6QL5Q1pe3jP0/img.png)
![](https://blog.kakaocdn.net/dn/3PeHD/btrMYS8fZg5/XNtti1N9xIG9KNE8fDHKS1/img.png)
- 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다
- 스프링 컨테이너는 설정 정보를 참조하여 의존관계를 주입(DI)한다.
- 참고
- 스프링 빈을 생성하고, 의존관계를 주입하는 단계가 나뉘어짐.
- 자바코드로 스프링 빈을 등록하면 생성자를 호출하면서 의존관계 주입도 한번에 처리됨.
빈 이름
- 빈 이름은 메서드 이름을 사용한다.
- 빈 이름을 직접 부여할 수도 있다.
- @Bean(name="memberService2")
- 빈이름은 항상 다른 이름을 부여해야함.!!
AppConfig 스프링 기반으로 변경
@Configuration //설정을 구성
public class AppConfig {
@Bean // 스프링 컨테이너에 스프링 빈 등록
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
@Bean
public OrderService orderService() {
return new OrderServiceImpl(
memberRepository(),
discountPolicy());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
@Bean
public DiscountPolicy discountPolicy() {
return new RateDiscountPolicy();
}
}
- 스프링 컨테이너는 @Configurattion이 붙은 AppConfig를 설정(구성) 정보로 사용한다.
- @Bean이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다.
- 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 한다.
- 스프링 빈은 @Bean이 붙은 메서드의 명을 스프링 빈의 이름으로 사용한다.
MemberApp 스프링 기반으로 변경
// AppConfig appConfig = new AppConfig();
// MemberService memberService = appConfig.memberService();
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
스프링 컨테이너를 통해서 필요한 스프링 빈을 찾아야 한다. 스프링 빈은 ApplcationContext.getBean()메서드를 사용해서 찾을 수 있다.
'Development Study > Spring Framework' 카테고리의 다른 글
[Spring] Bean Definition 스프링 빈 설정 메타 정보 (0) | 2022.10.03 |
---|---|
[Spring]BeanFactory와 ApplicationContext (0) | 2022.10.03 |
[Spring] IoC, Di 그리고 컨테이너 (0) | 2022.09.24 |
[Spring] 좋은 객체 지향 설계의 5가지 원칙 (0) | 2022.09.19 |
[Spring] 다형성 (0) | 2022.09.19 |
Comments