011_AOP注解开发
生活随笔
收集整理的這篇文章主要介紹了
011_AOP注解开发
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一. Spring的基于ApsectJ的注解的AOP開發
1. 編寫目標類并配置
2. 編寫切面類并配置
3. 在配置文件中打開注解的AOP開發
4. 在切面類上使用注解@Aspect
5. 前置通知@Before
6. 后置通知@AfterReturning
7. 注解配置切入點
8. 環繞通知@Around, 使用切入點
9. 異常拋出通知@AfterThrowing
10. 最終通知@After
二. AOP注解開發例子
1. 新建一個名為AOPAnnotation的Java項目
2. 創建UserDaoImpl.java類
package com.lywgames.dao.impl;public class UserDaoImpl{public void insert() {System.out.println("插入數據");}public void select() {System.out.println("查詢數據");}public void update() {System.out.println("更新數據");throw new RuntimeException();}public int delete() {System.out.println("刪除數據");return 1;}}3. 創建AspectJAop.java切面類
package com.lywgames.aop;import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut;/*** 切面類*/ @Aspect public class AspectJAop {@Before(value="execution(* com.lywgames.dao.impl.UserDaoImpl.insert(..))")public void beforeInsertCheck() {System.out.println("檢測插入數據");}@AfterReturning(value="execution(* com.lywgames.dao.impl.UserDaoImpl.delete(..))", returning="result")public void afterDelete(int result) {System.out.println("刪除后返回值:" + result);}@Around(value="AspectJAop.selectPoint()")public Object arround(ProceedingJoinPoint joinPoint) {try {System.out.println("查詢前鼓鼓掌。");Object obj = joinPoint.proceed();System.out.println("查詢后鼓鼓掌。");return obj;} catch (Throwable e) {e.printStackTrace();}return null;}@AfterThrowing(value="AspectJAop.updateExceptionPoint()", throwing="ex")public void updateException(Throwable ex) {System.out.println("更新發生了異常:" + ex.toString());}@After(value="AspectJAop.updateFinallyPoint()")public void myFinally() {System.out.println("更新方法發生了異常, 最終通知一樣會執行完成。");}@Pointcut(value="execution(* com.lywgames.dao.impl.UserDaoImpl.select(..))")private void selectPoint() {}@Pointcut(value="execution(* com.lywgames.dao.impl.UserDaoImpl.update(..))")private void updateExceptionPoint() {}@Pointcut(value="execution(* com.lywgames.dao.impl.UserDaoImpl.update(..))")private void updateFinallyPoint() {} }4. 創建AopAction.java測試類
package com.lywgames.action;import org.springframework.context.support.ClassPathXmlApplicationContext; import com.lywgames.dao.impl.UserDaoImpl;public class AopAction {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");UserDaoImpl userDaoImpl = context.getBean(UserDaoImpl.class);userDaoImpl.insert();userDaoImpl.delete();userDaoImpl.select();userDaoImpl.update();context.close();} }5. 在src目錄下添加applicationContext.xml配置
6. 運行項目
總結
以上是生活随笔為你收集整理的011_AOP注解开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 010_AOPXml方式开发
- 下一篇: 012_JDBC模板