Say Service는 로깅 측면 (주석)을 적용해야하는 Dao 클래스를 호출합니다. 어떻게 aspect가 실제로 적용되는지 궁금합니다.스프링 요소가 내부적으로 어떻게 작동합니까?
서비스 객체 아래에 DAO 삽입시 스프링은 약간의 애스펙트 (이 경우 로깅)가 DAO 용으로 구성되어 있으므로 실제 대상 객체 대신 프록시 객체를 주입한다는 것을 알게되었습니다. DAO 내부의 메소드를 실제 호출 할 때 프록시는 애스펙트를 적용한 다음 실제 타겟 객체를 호출합니다. 그 맞습니까 ? 또한 나는 이것이 시간 짜기라는 것을 믿습니다.
반면에 aspect를 적용해야하는 클래스에 대해 바이트 코드 조작 이 수행되는로드 시간 짜기 (javaagent 구성 사용)에서도 동일하게 수행 할 수 있습니다. 그래서 프록시는 여기에 사진으로 나오지 않습니다.
이것이 모든 스프링 모듈의 기초이므로 틀렸다고 생각하면 제발 저를 고쳐주십시오.
런타임 위빙의 경우 인 aspect 설정에 기반하여 프록시를 주입해야 하는지를 결정하는 데 성능 오버 헤드가 없기 때문에,로드 시간 짜기가 성능면에서 더 우수하다고 생각합니다. 예,로드 시간 길쌈 서버 시작 시간이 조금 더 오래 걸리 겠지만 일회성 활동으로는 괜찮습니다. –
로드 시간 짜기 (또는 특히 컴파일 시간 짜기) 성능이 더 좋을 수 있습니다.로드 테스트를 통해 실제로 확인하는 것이 좋을 것입니다) 하지만 빌드 시스템의 변경 사항처럼 다른 영역을 고려할 수도 있습니다.아티팩트가 생성되기 전에이 단계를 포함해야합니다. –
단지 유용한 인용문입니다. "컴퓨터 과학의 모든 문제는 너무 많은 방향성 문제에 대한 과정을 제외하고 다른 수준의 간접적 인 지시에 의해 해결 될 수 있습니다."- David Wheeler – smwikipedia