java Spring究竟如何使用JDK代理?
我对Spring可以使用的两种代理有一些疑问
因此,据我所知,JDK代理类型是Spring使用的默认类型,并且基于接口实现
根据我的理解(但我绝对不能肯定这个断言,如果它是错误的请纠正我),使用JDK代理代理“包装”的对象类和代理本身都必须实现一个接口
到底什么代表了这个接口?与任何接口一样,它包含未实现的方法声明。你有什么办法
在研究在线文档时,我发现了以下链接:http://docs.spring.io/autorepo/docs/spring/3.2.3.RELEASE/javadoc-api/org/springframework/context/annotation/EnableAspectJAutoProxy.html
这里显示了一个用于AOP行为的JDK代理的示例,但我对以前的接口使用有一些疑问
因此,正如您在本链接中看到的,有:
AppConfig配置类
@Configuration @EnableAspectJAutoProxy public class AppConfig { @Bean public FooService fooService() { return new FooService(); } @Bean public MyAspect myAspect() { return new MyAspect(); } }
我认为,@enableAspectProxy允许使用JDK代理添加方面行为(是真的吗?)
在这个类中定义了两个beanFooService和MyAspect
- FooService这是一个典型的POJO组件:
公共类餐饮服务{ //各种方法 }
MyAspect这是一个@Aspect样式的方面:
@方面 公共类MyAspect{ @在(“执行(*FooService+.*(..))之前) 公众谘询({ //建议适当的维修方法 } }
在上述场景中,@EnableAspectJAutoProxy确保MyAspect将得到正确处理,并且FooService将在其提供的建议中被代理
所以我的疑问是:如果FooServicebean是代理的,为什么它不显式地实现任何接口,因为(我认为)必须是JDK代理?我错过了什么
Tnx
共 (0) 个答案