autowire 된 모든 bean이 프록시에 의해 autowired되지 않는 이유를 찾을 수 없다. @Transactional
주석이 작동하지 않고 Eclipse에서 디버깅하는 동안 autowired 구성 요소를 확인했기 때문에 나는 알고 있습니다. 물론 모든 구성 요소는 일부 인터페이스를 구현하며 인터페이스와 관련하여 @Autowired
주석을 사용합니다. 나는 AOP의 한 구성을 가지고 :왜 autowire에 프록시가 사용되지 않는가?
<tx:annotation-driven transaction-manager="transactionManager" />
나 최대 절전 모드, 스프링 MVC, 스프링 webflow, 스프링 보안 및 스프링 데이터 JPA를 사용합니다. org.springframework.data.repository.CrudRepository
을 확장하는 인터페이스는 프록시에 의해 자동 연결됩니다. 하지만 내 구성 요소가 아닙니다. 어디 선가하는 MyInterface를 autowire하기 경우
@Service
public class MyClass implements MyInterface {
@Autowired
MyCrudReposiotry reposiotry;
....
}
: 예를 들어 내가 MyInterface
를 구현하는 클래스 MyClass
이
@Autowired
MyInterface mi;
다음
mi
그냥
MyClass
객체를 참조하고, 저장소는 프록시
org.springframework.aop.framework.JdkDynamicAopProxy
에에 refrence입니다. 매우 흥미로운 것은 테스트에서
mi
이 프록시를 참조한다는 것입니다. 내 테스트의 컨텍스트에는 웹 흐름과 mvc 구성이 포함되어 있지 않습니다.
아마도 간접적 인 구성이 있습니다. 프록시로 autowiring을 끌 수있는 것은 무엇입니까?
감사합니다. 도움을 주셔서 대단히 감사합니다. 문제는' '입니다. 나는 '만 가지고 있었지만 DispatcherServlet 컨텍스트에서만. 이제는 DispatcherServlet 컨텍스트의 컨트롤러 패키지에 대한 및 루트 컨텍스트의 내 서비스 패키지에 대한 두 번째' '항목이 있습니다. –
Mariusz