spring aop 理解
Aop
如果是接口:用java动态代理
如果不是接口:用Cglib
动态代理后,类$Proxy默认继承Proxy,因为java单继承机制,所以只有接口才能用java动态代理
获取bean的方式
new AnnotationConfigApplicationContext
继承ApplicationContextAware
ApplicationContext
@Autowired
private ApplicationContext context;
@Override
public AopProxy createAopProxy(AdvisedSupport config) throws AopConfigException {
if (config.isOptimize() || config.isProxyTargetClass() || hasNoUserSuppliedProxyInterfaces(config)) {
Class<?> targetClass = config.getTargetClass();
if (targetClass == null) {
throw new AopConfigException("TargetSource cannot determine target class: " +
"Either an interface or a target is required for proxy creation.");
}
if (targetClass.isInterface() || Proxy.isProxyClass(targetClass)) {
return new JdkDynamicAopProxy(config);
}
return new ObjenesisCglibAopProxy(config);
}
else {
return new JdkDynamicAopProxy(config);
}
}
正文到此结束
- 本文标签: spring
- 本文链接: https://codeis.run/article/spring-aop
- 版权声明: 本文由醒醒原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权