免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
春AOP強化タイプ
org.aopalliance.aop.Interface.Advice定義アドバイスAOPアライアンス通知
対象クラスのメソッドの通知の接続点位置に応じてスプリングの関連情報は、5つのカテゴリーに分けることができます
-
アドバイスの前に、org.springframework.aop.MethodBeforeAdvice
ターゲットを向上させる前者の方法で
-
アドバイスを帰国後org.springframework.aop.AfterReturningAdvice
強化ターゲット実行メソッドの実装前に、
-
アドバイスの周りの組織、aopalloance.intercept.MethodInterceptor
エグゼクティブの実施を強化するために、ターゲットメソッドの前と後
-
例外が通知をスローされますorg.springframework.aop.ThrowsAdvice
拡張メソッドの実装は、例外をスローした後、
-
通知org.springframework.aop.InteroductionInterceptorの紹介
ターゲットクラスに新しいメソッドとプロパティを追加する(使用しません)
AOPアスペクトタイプ
- 顧問:一般的なセクションに代わって、アドバイス自体は、すべてのメソッドを傍受するターゲットクラスのセクションです
- PointcutAdvisor:特定のカットオフ点の代わりにセクション、あなたがターゲットクラスを迎撃するためにどの方法を指定することができます
- IntrodcutionAdvisor:通知部の使用を導入するための導入部代表は(未使用します)
設定ファイルに追加する最初の必要性
その後、applicationContext.xmlを中に配置されています。
<!-- 配置目标类 -->
<bean id="studentDao" class="com.shunli.ioc.demo6.StudentDaoImpl"></bean>
<!-- 前置通知类型 -->
<bean id = "myBeforeAdvice" class="com.shunli.ioc.demo6.MyBeforeAdvice"></bean>
<!-- Spring的AOP产生代理对象 -->
<bean id="studentDaoProxy" class ="org.springframework.aop.framework.ProxyFactoryBean">
<!-- 配置目标类 -->
<property name="target" ref="studentDao"></property>
<!-- 实现的接口 -->
<property name="proxyInterfaces" value = "com.shunli.ioc.demo6.StudentDao"></property>
<!-- 采用拦截的名称 -->
<property name="interceptorNames" value="myBeforeAdvice"></property>
</bean>
でStudentDao.java
package com.shunli.ioc.demo6;
public interface StudentDao {
public void find();
public void save();
public void update();
public void delete();
}
StudentDaoImpl.java
package com.shunli.ioc.demo6;
public class StudentDaoImpl implements StudentDao{
@Override
public void find() {
System.out.println("find.....");
}
@Override
public void save() {
System.out.println("save.....");
}
@Override
public void update() {
System.out.println("update.....");
}
@Override
public void delete() {
System.out.println("delete.....");
}
}
MyBeforeAdvice.java
package com.shunli.ioc.demo6;
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class MyBeforeAdvice implements MethodBeforeAdvice{
@Override
public void before(Method method, Object[] args, Object target) throws Throwable {
System.out.println("前置增强......");
}
}
demo中
package com.shunli.ioc.demo6;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo {
@Resource(name="studentDaoProxy")
private StudentDao studentDao;
@Test
public void demo1(){
System.out.println("----------------------------------");
studentDao.find();
studentDao.save();
studentDao.update();
studentDao.delete();
}
}