스프링 AOP의 AOP 프로그래밍 : 차의 권고 : 형태 및 AOP

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 측면> 통지 및 패키지를 절단됩니다, 원칙은 기본적으로 그것을 사용하는 같은 단지 다른 방법이다.

게시 14 개 원래 기사 · 원의 칭찬 0 · 조회수 (314)

추천

출처blog.csdn.net/qq_38205881/article/details/104488681