spring 의 scope (역할 영역)
4180 단어 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 설정 인 스 턴 스 의 전제 와 마찬가지 로 웹 시작 파일 을 설정 하면 다음 과 같이 설정 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.