注釈ベースのSpring AOP開発 https://www.cnblogs.com/junzi2099/p/8274813.htmlから、
ターゲット・クラス・インタフェースと実装クラスを定義する1
春AOPアスペクトクラスの2書き込み
@Aspect パブリック クラスMyAspect { / ** *事前の通知 * / @Before( "実行(* com.zejian.spring.springAop.dao.UserDao.addUser(..))" ) 公共 無効(前){ System.out.println( "アドバイスの前に...." ); } / ** *アドバイスを返送した後、 *戻りreturnVal、カットポイント法が実行される値 * / @AfterReturning(値 = "実行(* com.zejian.spring.springAop.dao.UserDao.addUser(..))"、 "returnVal"を返す= ) 公共 ボイド{AfterReturning(オブジェクトreturnVal) System.out.println( "ポスト予告...." + returnVal)。 } / ** *周りのアドバイス * @Param クラスは、ジョインポイント接点を実行するために使用することができます * @return *は@throws のThrowable * / @Around( "実行(* com.zejian.spring.springAop.dao.UserDao.addUser(..))" ) 公衆の周りにオブジェクト(ProceedingJoinPointジョインポイント)がスローのThrowableを{ System.out.println( "の前に....サラウンド通知" ); オブジェクトOBJ = (オブジェクト)joinPoint.proceed(); System.out.println( "サラウンド通知...." ); を返すOBJ; } / ** *通知をスローします * @param E * / @AfterThrowing(値 = "実行(* com.zejian.spring.springAop.dao.UserDao.addUser(..))"、 "E"を投げる= ) 公共 ボイドafterThrowable(のThrowable e)を{ System.out.println( "異常:MSG =" + e.getMessage())。 } / ** *方法に関係なくはどのような状況下で実施されています * / @After(値 = "実行(* com.zejian.spring.springAop.dao.UserDao.addUser(..))" ) 公共 ボイド後(){ System.out.println( "最終通知...." )。 } }
3.春IOCコンテナ管理に引き渡さ設定ファイルを書きます
<豆のxmlns = "http://www.springframework.org/schema/beans" のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" のxmlns:AOP = "のhttp:// WWW .springframework.org /スキーマ/ AOP " のxmlns:コンテキスト = "http://www.springframework.org/schema/context" のxsi:schemaLocationの =" http://www.springframework.org/schema/beansのhttp:// www.springframework.org/schema/beans/spring-beans.xsd http:// www.springframework.org/schema/aop ます。http:// www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context のhttp:// WWW .springframework.org /スキーマ/コンテキスト/春-context.xsd 「> <! - @aspectj自動プロキシサポートを開始 - > <AOP:AspectJの-自動プロキシ/> <! - あなたの聴衆を定義します - > <ビーンID = "userDaos" クラス = "com.zejian.spring.springAop.dao.daoimp.UserDaoImp" /> <! - アスペクトクラスの定義 - > <Bean名= "myAspectJ" クラス = "com.zejian.spring.springAop.AspectJ.MyAspect" /> </豆>
テストクラスを書く4。
/ ** * 2017年2月19日にzejianによって作成されます。* / @RunWith(SpringJUnit4ClassRunner。クラス) @ContextConfiguration(位置 = "クラスパス:春/スプリングaspectj.xml" ) パブリック クラスUserDaoAspectJ { @Autowired UserDao userDao; @テスト 公共 のボイドaspectJTest(){ userDao.addUser(); } }
5.結果