spring純註解版aop編碼
阿新 • • 發佈:2021-02-07
目錄
配置bean
import org.springframework.context.annotation.*;
@Configuration
//包掃描的註解
@ComponentScan(basePackages = {"domain","aop"})//掃描多個包
public class AppConfig {
}
定義切面類
package aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.stereotype.Component; //掃描自動例項化 @Component //定義切面類 @Aspect //代替 <aop:auto-proxy>標籤 jdk false[default] cglib true @EnableAspectJAutoProxy(proxyTargetClass = false) public class Around { // 定義切入點 @Pointcut("within(domain..*)") public void pointCut(){} //引用切入點 // 該註解表示切入點和額外功能的組裝 @org.aspectj.lang.annotation.Around("pointCut()") public Object arround(ProceedingJoinPoint joinPoint){ Object ret= null; System.out.println("proxy before real method executing"); try { ret = joinPoint.proceed(); } catch (Throwable throwable) { throwable.printStackTrace(); } System.out.println("proxy after real method executing"); return ret; } }
test測試使用
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
UserService userService = (UserService) ctx.getBean("userServiceImpl");
userService.login("tomas","1234");