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 | 29 | 30 | 31 |
Tags
- 뉴렉처
- 세션
- 코테
- 메이븐
- MVC2
- 프로그래머스
- 프레임워크
- toUpperCase
- select
- AOP
- 코딩테스트
- @RestController
- 서블릿
- DDL
- JSP
- MVC
- 김영한
- 인프런
- 인텔리제이
- Model2
- 스프링
- 서브쿼리
- SQL
- 기술 대비
- Join
- Model1
- @Controller
- STS
- order by
- 자바
Archives
- Today
- Total
Heestory
04.스프링)스프링 컨테이너와 스프링 빈 본문
스프링 컨테이너 생성
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
- ApplicationContext : 스프링 컨테이너, 인터페이스
- 스프링 컨테이너 : XML 기반, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다(스프링이 유연하게 설정가능)
- AnnotationConfigApplicationContext(AppConfig.class); : ApplicationContext 인터페이스 구현체
- 구성 정보를 AppConfig.class에 지정
@Test
@DisplayName("애플리케이션 빈 출력하기")
void findApplicationBean(){
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName);
if(beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION){
Object bean = ac.getBean(beanDefinitionName);
System.out.println("name =" + beanDefinitionName + "object = " + bean);
}
}
- ac.getBeanDefinitionNames() : 스프링에 등록된 모든 빈의 이름을 조회
- ac.getBean() : 빈 이름으로 빈 객체(인스턴스) 조회
- 스프링이 내부에서 사용하는 빈은 getRole()로 구분 가능
- ROLE_APPLICATION : 일반적으로 사용자가 정의한 빈
- ROLE_INFRASTRUCTURE : 스프링이 내부에서 사용하는 빈
@Test
@DisplayName("빈 이름 조회")
void findBeanByName(){
MemberService memberService = ac.getBean("memberService", MemberService.class);
assertThat(memberService).isInstanceOf(MemberServiceImpl.class);
}
- isInstanceOf : 어떤 클래스로부터 생성되었는지
memberService.getClass() → memberServiceImpl
:memberService 내 생성된 구현 객체 타입이 누구인지?
스프링 빈 조회 - 상속관계
- 부모 타입으로 조회하면, 자식 타입도 함께 조회한다.
- 자바 객체의 최고 부모인 Object 타입으로 조회하면 모든 스프링 빈을 조회한다
BeanFactory와 ApplicationContext → 스프링 컨테이너
-BeanFactory
- 스프링 컨테이너의 최상위 인터페이스
- 스프링 빈을 관리하고 조회하는 역할을 담당
- getBean()을 제공
-ApplicationContext
- BeanFactory 기능을 모두 상속받아서 제공
- 메시지 소스를 활용한 국제화 기능 : 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로
- 환경 변수 : 로컬,개발,운영 등을 구분해서 처리
- 애플리케이션 이벤트 : 이벤트를 발행하고 구독하는 모델을 편리하게 지원
- 편리한 리소스 조회 : 파일,클래스패스, 외부 등에서 리소스를 편리하게 조회
BeanDefinition
:스프링 빈 설정 메타 정보를 추상화
본 내용은 인프런 - 김영한 스프링 기본편 강의 내용 정리용으로 작성하였습니다
'개발(~국비) > Spring' 카테고리의 다른 글
06.스프링) 컴포넌트 스캔 (0) | 2022.10.24 |
---|---|
05.스프링)싱글톤 컨테이너 (0) | 2022.10.24 |
02~03.스프링)핵심 원리 이해 (0) | 2022.10.22 |
01.스프링 (0) | 2022.10.20 |
DefaultHandlerExceptionResolver No converter found for return value of type: class java.util.ArrayList (0) | 2022.08.01 |