6.4.2 자바빈 프로퍼티
Spring에서 제공되는 대부분의 FactoryBean
구현 과 마찬가지로 , ProxyFactoryBean
클래스 자체는 JavaBean입니다. 속성은 다음과 같은 용도로 사용됩니다.
프록시 할 대상을 지정하십시오.
CGLIB 사용 여부를 지정합니다 (나중에 설명하고 JDK 및 CGLIB 기반 프록시 참조 ).
AOP 프록시 매커니즘은 두 가지가 있는데, 하나는 JDK 동적 프록시 이고, 다른 하나가 CGLIB 프록시야.
몇개의 키 프로퍼티는 org.springframework.aop.framework.ProxyConfig
(Spring의 모든 AOP 프록시 팩토리의 슈퍼 클래스 에서) 로부터 상속받습니다 . 이러한 주요 속성에는 다음이 포함됩니다.
proxyTargetClass
: 대상 클래스의 인터페이스가 아닌 대상 클래스가 프록시 될 경우 true. 이 속성 값을 true로 설정하면 CGLIB 프록시가 만들어집니다 ( JDK 및 CGLIB 기반 프록시 참조 ).optimize
: 적극적인 최적화가 CGLIB를 통해 생성 된 프록시에 적용되는지 여부를 제어합니다. 관련 AOP 프록시가 최적화를 처리하는 방법을 완전히 이해하지 않으면 이 설정을 사용하지 않아야합니다. 이것은 현재 CGLIB 프록시에만 사용됩니다. JDK 동적 프록시에서는 아무 효과가 없습니다.frozen
: 프록시 구성이있는 경우 구성frozen
변경이 더 이상 허용되지 않습니다. 이는 약간의 최적화와Advised
프록시 생성 후 발신자가 ( 인터페이스를 통해 ) 프록시를 조작 할 수 없도록하려는 경우에 유용합니다 . 이 속성의 기본값은false
이므로 변경 사항 (예 : 추가 advice 추가)이 허용됩니다.exposeProxy
: 현재 프록시가ThreadLocal
대상에 의해 액세스 될 수 있도록 노출되어야하는지 여부를 결정합니다 . 대상에서 프록시를 가져와exposeProxy
속성을 true로 설정 해야하는 경우 대상에서이 메서드를true
사용할 수 있습니다AopContext.currentProxy()
.
ProxyFactoryBean
다음의 특정 속성을 포함한다.
proxyInterfaces
:String
인터페이스 이름 의 배열 . 이것이 제공되지 않으면 대상 클래스에 대한 CGLIB 프록시가 사용됩니다 (그러나 JDK 및 CGLIB 기반 프록시 참조 ).interceptorNames
: 적용할 Advisor나 인터셉터, 다른 어드바이스 이름의 문자열 배열. 순서가 중요하므로 처음 나온 것이 먼저 적용된다. 즉, 리스트의 첫 인터셉터가 가장 먼저 호출을 가로챌 수 있다. 이름들은 조상 팩토리의 빈 이름을 포함해서 현재 팩토리의 빈 이름들이다. 여기서 빈 참조가 없는데 그렇게 할 경우 어드바이스의 싱글톤 설정을 무시하는 ProxyFactoryBean가 되기 때문이다.인터셉터 이름 앞에 별표 (
*
)를 붙일 수 있습니다 . 그러면 별표가 적용되기 전에 파트로 시작하는 이름을 가진 모든 advisor bean이 적용됩니다. "글로벌"권고 자 사용에서이 기능을 사용 하는 예를 찾을 수 있습니다 .싱글 톤 (singleton) :
getObject()
메서드가 호출 되는 빈도에 관계없이 팩터리가 단일 객체를 반환해야하는지 여부 . 몇 가지FactoryBean
구현이 그러한 방법을 제공합니다. 기본값은true
입니다. 상태 기반 조언을 사용하려면 (예 : 상태 기반 믹스) - prototype advice와 singleton 값을 false로 사용하십시오.
Last updated