HTTPS : //www.jianshu.com/p/40f79da0cdef에서 전달
<: 고문 AOP를> 트랜잭션 관리하는 동안, 우리가 사용하는 것이다 : <측면 AOP가> 개발 과정에서 사용 스프링 AOP의 많은 프로그래밍을 지향 할 때, 우리가 사용하는 것이있다. 그래서, <AOP :면>과 : 차이 <AOP 고문>, 구체적으로 무엇인가?
둘 사이의 차이에 관해서는, 거기에 많은 정보가 온라인이지만 취소 할 수없는 것.
우선, 우리 모두의 명확한 개념이 필요합니다.
<AOP : 양태> (통 지부와 접하는 점을 포함) 형성면
<AOP : 관리자> 통보 정의 (통보 알림과 접하는 점을 포함하는 구역과 같은)
아래에, 우리는 둘 사이에 약간의 차이가있다.
1, 다른 구현
<AOP는 :면> 전용 라인에 일반 빈을 정의 할 필요가 정의 섹션은, 정의 : 통지에 언급 된 <AOP 고문> 알림이 조언 인터페이스를 구현해야합니다.
여기에서 우리는 설명한다.
다음과 같이 첫째, 우리는 휴먼 인터페이스 Sleepable을 정의하고이 인터페이스를 구현하는 코드는 다음과 같습니다
public interface Sleepable {
public void sleep();
}
public class Human implements Sleepable {
@Override
public void sleep() {
System.out.println("我要睡觉了!");
}
}
<: 권고 AOP> 실시 다음과 같다 :
//定义通知
public class SleepHelper implements MethodBeforeAdvice,AfterReturningAdvice{
@Override
public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable {
System.out.println("睡觉前要脱衣服!");
}
@Override
public void afterReturning(Object arg0, Method arg1, Object[] arg2,
Object arg3) throws Throwable {
System.out.println("起床后要穿衣服!");
}
}
//aop配置
<bean id="sleepHelper" class="com.ghs.aop.SleepHelper"></bean>
<aop:config>
<aop:pointcut expression="execution(* *.sleep(..))" id="sleepPointcut"/>
<aop:advisor advice-ref="sleepHelper" pointcut-ref="sleepPointcut"/>
</aop:config>
<bean id="human" class="com.ghs.aop.Human"/>
<: AOP 양태> 실시 다음과 같다 :
//定义切面
public class SleepHelperAspect{
public void beforeSleep(){
System.out.println("睡觉前要脱衣服!");
}
public void afterSleep(){
System.out.println("起床后要穿衣服!");
}
}
//aop配置
<bean id="sleepHelperAspect" class="com.ghs.aop.SleepHelperAspect"></bean>
<aop:config>
<aop:pointcut expression="execution(* *.sleep(..))" id="sleepPointcut"/>
<aop:aspect ref="sleepHelperAspect">
<!--前置通知-->
<aop:before method="beforeSleep" pointcut-ref="sleepPointcut"/>
<!--后置通知-->
<aop:after method="afterSleep" pointcut-ref="sleepPointcut"/>
</aop:aspect>
</aop:config>
<bean id="human" class="com.ghs.aop.Human"/>
2, 다른 장면의 사용
대부분의 트랜잭션 관리에 사용 : <AOP 고문>.
예를 들면 :
<!-- 会重复读,不会脏读事务 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" timeout="120" propagation="REQUIRED" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<aop:config proxy-target-class="true">
<aop:pointcut id="txPointCut" expression="..."/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut" />
</aop:config>
주로 로깅 캐싱 사용 <AOP 양태>
사실인지 <AOP : 권고> 또는 <AOP : 태양> 최종 구현 로직은 동일하다.
요약 :
으로 볼 수있는, <AOP : 고문>과 : 사실 <AOP 측면> 통지 및 패키지를 절단됩니다, 원칙은 기본적으로 그것을 사용하는 같은 단지 다른 방법이다.