前言
面向切面程式設計,如果出現需要在切面中加如新的功能,但是又不想進入原來切面進行代碼新增。這裡就可以建立一個切面類,指向需要新增功能的切點上即可,但如果你需要讓新增的切面方法在原來切面之前執行,那麼就可以通過@Order進行指定值,值越大越先執行。
原切面類
/** * MyAspect 簡要描述 * <p> TODO:描述該類職責 </p> * * @author ckmike * @version 1.0 * @date 18-12-5 下午7:09 * @copyright ckmike **/ @Component @Aspect public class MyAspect { // 指定需要開啟切面的處理入口 @Pointcut("execution(* com.aop.annotationaop.dao.IUserDao.*(..))") public void pointCut(){ } @Before("pointCut()") public void begin(){ System.out.println("開啟事務..."); } @After("pointCut()") public void close(){ System.out.println("關閉事務..."); System.out.println("-------------------------------"); } }
新增切面類
/** * MyAspect2 簡要描述 * <p> TODO:描述該類職責 </p> * * @author ckmike * @version 1.0 * @date 18-12-5 下午7:46 * @copyright ckmike **/ @Component @Aspect @Order(20) public class MyAspect2 { // 指定需要開啟切面的處理入口 @Pointcut("execution(* com.aop.annotationaop.dao.IUserDao.*(..))") public void pointCut(){ } @Before("pointCut()") public void log(){ System.out.println("打開記錄日志..."); } @After("pointCut()") public void close(){ System.out.println("關閉日志記錄"); } }
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCM581dvRWYoNHLwEzX5xCMx8FesU2cfdGLwATMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3IGZ2EDN2QzMzIWOklTN2Q2NxQTOiBDOiRjZxEWZ0MzLcVDMvwlMxgTMwIzLcd2bsJ2LcNXZnFWbp9CXt92Yu8GdjFTNuITavw1LcpDc0RHaiojIsJye.png)
總結:指定@Order值越大越先執行,這樣如果需要進行擴充就非常的友善,都不需要進入到原來的切面中進行編碼,維護自己的切面類就可以啦。