Species는 주석을 통한 탄젠트 및 향상을 설명합니다.
1 개발 환경 요구 사항
주석을 사용하려면 Java 5.0 이상을 사용하고 있는지 확인하십시오.
AnspectJ 관련 클래스 라이브러리 소개 :
<pectionency> <groupId> org.aspectj </groupid> <artifactid> agagejrt </artifactid> <버전> $ {agagej.version} </version> </dependency> <prectionency> <groupId> org.aspectj </groupID> <artifactID> SARSTJWEAVER </artifactId> <버전> $ {AnalsperJ.version} </version} </version> </dependency> <pectionency> <groupId> org.aspectj </groupId> inspectjtools </artifactid> <version> $ {passepj.version} </version> </dependency> <groupd> anspectj </groupid> <버전> $ {AnalspectJ.version} </version> </fectionency> <pectionency> <groupId> aopalliance </groupId> <artifactID> aopalliance </artifactid> <버전> $ {aopalliance.version} </version> </dependency> 2 개의 프로그래밍 방법
@Aspect // 패싯을 식별합니다
공개 클래스 PrerentAspect {/*** Enhanced Logic*/@before ( "execution (* rent (..))") // 접선 및 향상 유형 정의 공개 void beforerent () {System.out.println ( "임대 실행 시작"); }}이 섹션은 평범한 Pojo이지만 @aspect 주석이 추가됩니다.
@Before("execution(* rent(..))") @Before 유형이 사전 강화 된 향상이고 그 내용이 @aspectj point-cut 표현식임을 의미합니다. 여기에서는 대상 클래스의 Rent () 메소드에서 향상이 직조되었음을 의미합니다. Rent ()에는 들어오는 매개 변수와 반환 값이 포함될 수 있습니다.
@Aspect 가있는 클래스가 주석 및 코드를 통해 탄젠트 포인트, 향상 유형 및 향상된 크로스 컷팅 로직을 통합하는 것이 매우 편리하지 않습니까? o (∩_∩) o 하하 ~
단위 테스트 :
SagneProxyFactory Factory = New AnalsureJProxyFactory (); // 대상 클래스 팩토리를 설정합니다. SETTARGET (new user ()); // 패싯 클래스 팩토리 addaspect (prerentAspect.class); user proxy = factory.getProxy (); proxy.rent (useriD); proxy.back (userid);
출력 결과 :
-임대 행동을 시작하십시오-
사용자 : 임대 [파워 뱅크]
사용자 : 반품 [파워 뱅크]
3 구성 방법
<!-대상 클래스-> <bean id = "user"/> <!-얼굴 클래스-> <bean/> <!-자동으로 에이전트 생성-> <bean/>
단위 테스트 :
ApplicationContext Context = new ClassPathXmlApplicationContext (spring.xml "); user user = (user) context.getBean ("user "); String userId ="001 "; user.rent (userId); user.back (userId);출력은 프로그램과 정확히 동일합니다.
Schema의 AOP 네임 스페이스를 기반으로 구성 할 수도 있습니다.
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : aop = "http://www.springframework.org/schema/aop"xsi : schemalocation = "http://www.springframework.org/schema/beans http://ww.springframework.org/schema/spred-beans- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd "> <! <! <aop : aop : agagj-autoproxy/> <!-target class-> <us in user"/> clase->>>>>>>>>>.
이 구성은 더 간단합니다. 실제로, 자동 프록시 모드는 <aop:aspectj-atuoproxy/> o (∩__) o haha ~ 내에서 채택되었습니다.
<aop:aspectj-atuoproxy/> 의 proxy-target-class 속성은 기본적으로 False이며, 이는 JDK 동적 프록시 기술을 사용하여 향상이 직조임을 나타냅니다. 이 값이 사실이라면 CGLIB 동적 프록시 기술을 사용하여 향상이 직조임을 나타냅니다. 대상 클래스가 인터페이스를 선언하지 않으면 proxy-target-class False로 설정 되더라도 Enhanced yo (∩_∩) o haha ~
Java 5.0+를 기반으로 한 프로젝트의 경우 SAPINGJ를 사용하여 점 절단 및 향상을 구성하는 것이 좋습니다. 이는 더 간단하고 직접적이기 때문입니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.