废话不多说直接上源码:
Bean
public class MathDiv {
public int div(int i,int j){
return i/j;
}
}
LogAspects
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class LogAspects {
@Pointcut("execution(public int spring.yitian.bean.MathDiv.*(..))")
private void poindCut(){}
@Before("poindCut()")
public void before(){
System.out.println("除法之前");
}
}
ConfigOfAop
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import spring.yitian.bean.LogAspects;
import spring.yitian.bean.MathDiv;
@Configuration
@EnableAspectJAutoProxy
public class ConfigOfAop {
@Bean("MathDiv")
public MathDiv getMathDiv(){
return new MathDiv();
}
@Bean("LogAspects")
public LogAspects getLogAspects(){
return new LogAspects();
}
}
测试类
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import spring.yitian.bean.MathDiv;
import spring.yitian.config.ConfigOfAop;
/**
* AnnotationAwareAspectJAutoProXyCreator
*/
public class MainOfAopTest {
@Test
public void test01(){
AnnotationConfigApplicationContext applicationContext=new
AnnotationConfigApplicationContext(ConfigOfAop.class);
MathDiv mathDiv=(MathDiv) applicationContext.getBean("MathDiv");
mathDiv.div(1,1);
}
}
@EnableAspectJAutoProxy
-
有没有注册组件 组件什么时候工作 组件的功能是什么
-
https://blog.csdn.net/qq_27529917/article/details/78454801链接查看
-
@EnableAspectJAutoProxy注解点进去,
-
-
-
下面这一步是internalAutoProxyCreator=AnnotationAwareAspectJAutoProXyCreator(注解装配模式的切面自动代理创建器)
-
-
AnnotationAwareAspectJAutoProxyCreator
-
--》AspectJAwareAdvisorAutoProxyCreator
-
--》AbstractAdvisorAutoProxyCreator
-
--》AbstractAutoProxyCreator
-
-
-
-
分析继承类 AbstractAutoProxyCreator其中有setBeanFactory()方法bean工厂 【打断点】
-
AbstractAutoProxyCreator.postProcessBeforeInstantiation 后置处理器的逻辑 【打断点】
-
AbstractAdvisorAutoProxyCreator.setBeanFactory()-->initBeanFactory() 【打断点】
-
AnnotationAwareAspectJAutoProxyCreator.initBeanFactory() 【打断点】
-