츄르사려고 코딩하는 코집사입니다.
1. 빈(Bean)
- 스프링(Spring)이 IoC(Inversion of Control) 방식으로 관리하는 오브젝트
- 스프링(Spring)이 직접 그 생성과 제어를 담당하는 오브젠트
- XML 파일에서 정의
2. 빈(Bean)의 주요 속성
- class : 정규화된 자바 클래스의 이름
- id : 빈(Bean)의 고유 식별자
- scope : 객체의 범위(singleton과 prototype)
- property : 생성시 bean setter에 전달할 인수 -> setter가 없으면 에러 발생
<bean id="gbDao" class="com.ssafy.model.dao.GuestBookDaoImpl">
<property name="dataSource" ref="ds"/>
</bean>
<!-- com.ssafy.model.dao.GuestBookDaoImpl 클래스 객체를 gbDao이름으로생성
dataSource 에 ds 객체 참조 -->
3. 빈팩토리(BeanFactory)
- 스프링(Spring)이 IoC(Inversion of Control)를 담당하는 핵심 컨테이너
- 빈(Bean)을 등록, 생성, 조회, 반환하는 기능을 담당.
- 일반적으로 빈 팩토리(BeanFactory)를 바로 사용하지 않고 이를 확장한 ApplicationContext를 이용
4. 애플리케이션 컨텍스트(ApplicationContext)
- 빈팩토리(BeanFactory)를 확장한 IoC(Inversion of Control) 컨테이너
- 빈(Bean)을 등록, 생성, 조회, 반환하는 기능을 담당.
- 스프링(Spring)의 부가 서비스 사용
- 스프링(Spring)이 제공하는 애플리케이션 기능을 모두 포함
5. 빈(Bean) 생성범위
1) 싱글톤 빈(Singleton Bean)
- 기본적으로, 빈(Bean)은 싱글톤(Singleton)으로 생성
- 생성된 인스턴스는 single beans cache에 저장되어 요청과 참조가 있으면 캐시에 저장된 객체를 반환
- 컨테이너가 제공하는 모든 빈(Bean)의 인스턴스는 항상 동일
- 컨테이너가 항상 새로운 인스턴스를 반환하고 싶으면 scope를 prototype으로 설정
Scope | Description |
singleton | 하나의 빈(Bean) 정의에 대해 Spring IoC Contatiner 내에 단 하나의 객체만 존재 컨테이너가 사라질 때 빈(Bean)도 삭제 |
prototype | 하나의 빈(Bean) 정의에 대해 다수의 객체가 존재 |
request | 하나의 빈(Bean) 정의에 대해 하나의 HTTP request의 생명주기 안에 단 하나의 객체만 존재 각각의 HTTP request는 자신만의 객체를 가짐 Web-aware Spring ApplicationContext 안에서만 유효 |
session | 하나의 빈(Bean) 정의에 대해 하나의 HTTP Session의 생명주기 안에 단 하나의 객체만 존재 Web-aware Spring ApplicationContext 안에서만 유효 |
global session | 하나의 빈(Bean) 정의에 대해 하나의 Global Session의 생명주기 안에 단 하나의 객체만 존재 portlet context 안에서 유효 Web-aware Spring ApplicationContext 안에서만 유효 |
2) Prototype
- 모든 요청에서 새로운 객체를 생성
- 정상적인 방식으로 빈(Bean) 제거
6. getBean()
- getBean() 메서드를 통해 빈(Bean) 객체를 가져올 수 있다.
GuestBookService guestBookService = context.getBean("gbService", GuestBookServiceImpl.class);
'IT > 스프링(Spring)' 카테고리의 다른 글
스프링 프레임워크(Spring Framework)에서 DispatcherServlet 통해 화면이 뿌려지는 방법 (0) | 2021.10.20 |
---|---|
스프링 프레임워크(Spring Framework)에서 DispatcherServlet이 뷰(View)를 찾는 방법 (0) | 2021.10.15 |
스프링 프레임워크(Spring FrameWork)에서 프로젝트를 위한 세팅하는 방법 (0) | 2021.10.14 |
스프링(Spring) MVC패턴(Model, View, Controller) Model 2 (0) | 2021.10.09 |
스프링(Spring) Ibatis/Mybatis에서 ##, #{}과 $$, ${}의 차이점 (1) | 2021.09.17 |
스프링(Spring) MyBatis typeAliases (0) | 2021.04.29 |
스프링(Spring) MyBatis란? (0) | 2021.04.29 |
스프링(Spring) MVC(Model-View-Controller) 패턴 (0) | 2021.04.27 |
최근댓글