spring 의 scope (역할 영역)

4180 단어 spring
spring 은 다음 과 같은 다섯 가지 역할 영역 이 있 습 니 다.
1. singleton (단일 모드) 은 bean 의 역할 영역 이 singleton 으로 설정 되 었 을 때 ioc 용기 에 이 유형의 인 스 턴 스 bean 만 만 생 성 한 다 는 것 을 의미 합 니 다. 게 으 른 로 딩 lazy - init 를 설정 하지 않 으 면 bean 이 만 드 는 과정 은 용기 의 초기 화 과정 (ioc 용기 의 자원 포 지 셔 닝, 로 딩, 등록) 에서 발생 합 니 다.ioc 용 기 를 되 돌려 달라 고 요청 할 때마다 유일 하 게 존재 하 는 인 스 턴 스 bean 입 니 다.  
설정:

테스트
ApplicationContext applicationContext = 
				new ClassPathXmlApplicationContext("classpath:spring/applicationContext3.xml");
		Role role1 = (Role)applicationContext.getBean("role");
		Role role2 = (Role)applicationContext.getBean("role");
		System.out.println(role1==role2);

테스트 결과
true

결 과 를 true 로 되 돌려 줍 니 다. 즉, 두 인용 대상 의 주소 가 같다 는 것 은 인용 이 같은 대상 을 가리 키 는 것 을 의미 합 니 다.
 
에피소드: 여기 내 가 말 한 것 좀 봐.  게 으 른 로 딩 lazy - init 를 설정 하지 않 으 면 bean 이 만 드 는 과정 은 보통 용기 초기 화 과정 (ioc 용기 의 자원 포 지 셔 닝, 불 러 오기, 등록) 에서 발생 합 니 다.이것 은 springioc 용기 초기 화 과정 에서 조건 판단 입 니 다. true 는 bean 을 만 듭 니 다.
if (!bd.isAbstract() && bd.isSingleton() && !bd.isLazyInit()){
    ......
}

2. prototype (원형) 은 하나의 bean 의 역할 영역 이 prototype 으로 설정 되 었 을 때 bean 의 역할 영역 이 설 치 된 원형 모드 입 니 다. 즉, ioc 용기 에 유일한 이 bean 이 존재 하지 않 고 이 bean 의 생 성 은 ioc 용기 의 초기 화 과정 에서 발생 하지 않 습 니 다 (lazy - init 로 설정 되 더 라 도 bean 은 ioc 용기 가 초기 화 될 때 만 들 지 않 습 니 다. 위의 에피소드 에 따라).매번 요청 할 때마다 bean 인 스 턴 스 를 만 듭 니 다. 다시 말 하면 이 bean 에 대한 주입 이나 getBean 은 new 새로운 bean 이 나 와 클 라 이언 트 에 게 전달 합 니 다.
설정:

테스트
ApplicationContext applicationContext = 
				new ClassPathXmlApplicationContext("classpath:spring/applicationContext3.xml");
		Role role1 = (Role)applicationContext.getBean("role");
		Role role2 = (Role)applicationContext.getBean("role");
		System.out.println(role1==role2);

결실
false

false 는 인용 이 가리 키 는 것 이 같은 주소 가 아니 라 는 것 을 설명 합 니 다. 즉, 두 번 받 은 대상 이 같은 대상 이 아니 라 는 것 입 니 다.
3. request, request 는 모든 HTTP 요청 에 대해 새로운 bean 을 생 성 하 는 동시에 이 bean 은 현재 HTTP request 에서 만 유효 합 니 다. 인 스 턴 스 설정: request, session, global session 을 사용 할 때 먼저 웹 을 초기 화 하 는 웹. xml 에서 다음 과 같이 설정 해 야 합 니 다.
Servlet 2.4 이상 의 웹 용 기 를 사용 하고 있다 면 웹 에 적용 되 는 XML 성명 파일 웹. xml 에 다음 ContextListener 를 추가 하면 됩 니 다. 


   ...
  
org.springframework.web.context.request.RequestContextListener
  
   ...


Servlet 2.4 이전 웹 용기 라면 javax. servlet. Filter 를 사용 하 십시오. 
 

 ..
  
    requestContextFilter 
    org.springframework.web.filter.RequestContextFilter
  
  
    requestContextFilter 
    /*
 
   ...

이어서 bean 의 역할 영역 을 설정 할 수 있 습 니 다: 

4. session, session 역할 도 메 인 은 모든 HTTP 요청 에 대해 새로운 bean 을 생 성 하 는 동시에 이 bean 은 현재 HTTP session 에서 만 유효 하 며 인 스 턴 스 를 설정 합 니 다.
설정 인 스 턴 스:
request 설정 인 스 턴 스 의 전제 와 마찬가지 로 웹 시작 파일 을 설정 하면 다음 과 같이 설정 할 수 있 습 니 다. 

5、global session
global session 역할 영역 은 표준 HTTP Session 역할 영역 과 유사 하지만 portlet 기반 웹 응용 에서 만 의미 가 있 습 니 다.Portlet 규범 은 전역 Session 의 개념 을 정 의 했 고 모든 portlet 웹 응용 을 구성 하 는 다양한 portlet 에 의 해 공유 되 었 다.global session 역할 영역 에서 정 의 된 bean 은 전역 portlet Session 의 수명 주기 범위 에 한정 되 어 있 습 니 다.웹 에서 global session 역할 영역 을 사용 하여 bean 을 표시 하면 웹 은 자동 으로 session 형식 으로 사 용 됩 니 다.
설정 인 스 턴 스:
request 설정 인 스 턴 스 의 전제 와 마찬가지 로 웹 시작 파일 을 설정 하면 다음 과 같이 설정 할 수 있 습 니 다. 

 
 
 
 
 
 

좋은 웹페이지 즐겨찾기