Spring 라 이 프 사이클 의 bean 의존 주입
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- an HTTP Session-scoped bean exposed as a proxy -->
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">
<!-- instructs the container to proxy the surrounding bean -->
<aop:scoped-proxy/>
</bean>
<!-- a singleton-scoped bean injected with a proxy to the above bean -->
<bean id="userService" class="com.foo.SimpleUserService">
<!-- a reference to the proxied userPreferences bean -->
<property name="userPreferences" ref="userPreferences"/>
</bean>
</beans>
이 프 록 시 를 만 들 기 위해 서 는 bean 에 이러한 요 소 를 삽입 하 였 습 니 다.프로 토 타 입 과 앞서 언급 한 session 의 scope 를 살 펴 보 자.
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
<bean id="userManager" class="com.foo.UserManager">
<property name="userPreferences" ref="userPreferences"/>
</bean>
이 예 에서 userManager 는 scope 가 singleton 인 bean 이 고 그 에 게 Http session 주기 인 bean: userPreferences 를 주입 하 는 것 이 분명 하 다. userManager 는 용기 에 하나의 예 이다. 그 는 용기 에 한 번 만 예화 되 고 그의 의존 도 한 번 만 주입 된다.즉, 실제 userManager 는 매번 같은 userPreferences 대상 을 조작 한 다 는 것 이다.이렇게 되면 당신 이 원 하 는 결 과 를 어기 고 짧 은 생명주기 의 bean 을 긴 생명주기 의 bean 에 주입 하 는 것 입 니 다. 그러나 HttpSession 의 생명주기 를 고려 하기 위해 서 는 userPreferences 가 그의 생명주기 를 가리 키 도록 해 야 합 니 다. 따라서 용 기 는 userPreferences 와 같은 인 터 페 이 스 를 가 진 대리 대상 을 만 듭 니 다.그 는 진정한 userPreferences 작업 을 요청 할 것 입 니 다. 용 기 는 이 대 리 를 userManager 에 주입 합 니 다. 그러나 이 모든 것 은 userManager 에 투명 합 니 다. 그 가 userPreferences 를 호출 할 때 실제 대 리 를 호출 하고 대 리 는 실제 HttpSession 에서 userPreferences 를 얻 으 며 userPreferences 를 호출 하 는 방법 을 의뢰 합 니 다.
따라서, 당신 이 주입 하고 자 하 는 bean 의 scope 가 request, session 또는 globalSession 일 때, 정확 하고 완전한 쓰 기 는 다음 과 같 아야 합 니 다.
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">
<aop:scoped-proxy/>
</bean>
<bean id="userManager" class="com.foo.UserManager">
<property name="userPreferences" ref="userPreferences"/>
</bean>
여기까지 입 니 다. 실제로 상기 내용 은 프 록 시 디자인 모델 을 이해 하 는 좋 은 예 입 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.