스프링 스코프 프록시빈
누가 스프링의 용도를 설명해 줄 수 있나요?@ScopedProxy
주석?세션 스코프 콩과 관련이 있는 줄 알았는데, 정확히는 모르겠어요.
스코프 사용에서는 세션 스코프 빈을 사용하여@ScopedProxy
주석(또는 aop 범위 프록시 없음)을 사용하기 때문에 올바르게 사용하는 방법은 확실합니다.
Spring 문서의 섹션 3.4.4.5에서 충분히 설명합니다.
(다음 'user Preferences'의 bean 정의는 현재 완전하지 않습니다).
<!-- an HTTP Session-scoped bean -->
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
<!-- a singleton-scoped bean -->
<bean id="userManager" class="com.foo.UserManager">
<property name="userPreferences" ref="userPreferences"/>
</bean>
위의 설정에서는 싱글톤빈 'userManager'가 HTTP 세션 스코프의 빈 'userPreferences'에 대한 참조와 함께 삽입되고 있음을 알 수 있습니다.여기서 중요한 점은 'userManager' bean은 싱글톤이라는 것입니다.컨테이너당 정확히 한 번 인스턴스화되며 종속성(이 경우 'userPreferences' bean)도 한 번만 주입됩니다(1회!).
즉, 'userManager'는 (개념상) 동일한 'userPreferences' 오브젝트, 즉 원래 삽입된 오브젝트에서만 동작합니다.
이것은 HTTP 세션 범위 빈을 상호협력 개체에 종속적으로 삽입할 때(일반적으로) 원하는 것이 아닙니다.대신 컨테이너당 하나의 'userManager' 오브젝트를 원하는 경우 HTTP 세션의 라이프타임 동안 해당 HTTP 세션에 고유한 'user Preferences' 오브젝트를 표시하여 사용합니다.
대신 UserPreferences 클래스와 동일한 퍼블릭인터페이스(이상적으로는 UserPreferences 인스턴스)를 공개하고 선택한 기본 범위 메커니즘(HTTP 요구, S)에서 실제 UserPreferences 개체를 가져올 수 있는 스마트한 오브젝트를 삽입하는 것이 필요합니다.세션 등)그런 다음 이 프록시 개체를 'userManager' 빈에 안전하게 삽입할 수 있습니다. 빈은 이 프록시 개체가 보관되어 있는 사용자 기본 설정 참조가 프록시임을 전혀 인식하지 못합니다.
이 경우 UserManager 인스턴스가 종속성이 주입된 UserPreferences 개체에서 메서드를 호출하면 실제로 프록시 상에서 메서드를 호출하게 됩니다.그러면 프록시는 꺼지고 실제 UserPreferences 객체를 HTTP 세션(이 경우)에서 가져와 가져온 실제 UserPreferences 객체에 메서드 호출을 위임합니다.
따라서 콜라보레이션오브젝트에 request-session, 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>
여기에 기재되어 있는 다양한 옵션과 스프링 매뉴얼을 사용해 본 결과, 봄 MVC는 @Controller 주석을 사용할 때 컨트롤러의 자동 접속이 원활하지 않은 상태이며, 이러한 컨트롤러가 웹 앱에 여러 개 있는 위치를 알 수 있었습니다.주석을 @RestController(값="로 수정.Unique Controllerv1") 문제가 해결되었습니다.
언급URL : https://stackoverflow.com/questions/14371335/spring-scoped-proxy-bean
'programing' 카테고리의 다른 글
쿠키와 세션은 무엇이며 서로 어떤 관계가 있습니까? (0) | 2022.10.02 |
---|---|
PHP에서 세션 시간 초과를 변경하는 방법 (0) | 2022.10.02 |
이클립스:자동 포맷의 최대 줄 길이를 설정하시겠습니까? (0) | 2022.10.02 |
문자열을 Array List로 변환하는 방법 (0) | 2022.10.02 |
사용자의 비밀번호를 안전하게 저장하려면 어떻게 해야 합니까? (0) | 2022.10.02 |