**Springboot项目,在使用AspectJ做切面时,使用@order无法指定切面的织入顺序,@Order是SpringIOC容器下管理Bean的执行顺序,而使用ltw的当时在类加载的时候无法就已经植入,其bean不由SpringIoc管理,是不是这样不能指定其织入顺序。
CustomLtwConfig.java
@Configuration
@ComponentScan("com.zakary.qingblog.controller")
@EnableLoadTimeWeaving(aspectjWeaving=ENABLED)
public class CustomLtwConfig{
}
aop.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
<!--要织入切面的目标类-->
<!-- <weaver>-->
<!-- <include within="com.zakary.qingblog.*" />-->
<!--<!– <include within="org.springframework.boot..*" />–>-->
<!-- </weaver>-->
<weaver options="-Xset:weaveJavaxPackages=true">
<include within="com.zakary.qingblog..*" />
</weaver>
<!--切面类-->
<aspects>
<!-- <aspect name="com.zakary.qingblog.aop.LoggerAspect" />-->
<aspect name="com.zakary.qingblog.aop.LoginAspect" />
<aspect name="com.zakary.qingblog.aop.InterceptorAspect"/>
<aspect name="com.zakary.qingblog.aop.ParamsCheckAspect"/>
</aspects>
</aspectj>
其中的一个切面
@Aspect
@Order(5)
public class LoginAspect {
private Logger logger= LoggerFactory.getLogger(QingblogApplication.class);
@Pointcut("execution(* com.zakary.qingblog.controller.LoginController.userLogin(..))")
public void loginAop() {}
@Before("loginAop()")
public void before(JoinPoint point) throws Throwable {
Object[] objArgs = point.getArgs();
String mail= AnalysisUtils.getObjectToMap(objArgs[0]).get("userMail").toString();
String password=AnalysisUtils.getObjectToMap(objArgs[0]).get("userPassword").toString();
logger.info("Order(5) User Login : [ userMail : "+mail+"\t , password : "+password+"\t ]");
}
}