我对使用Spring可以使用的两种代理有一些疑问。
因此,根据我的理解, JDK代理类型是Spring使用的默认类型,它基于接口实现。
从我所理解的(但我绝对不确定这个断言,纠正我,如果它是错的)使用 JDK代理对象“包裹”的对象的类和代理本身必须实现一个接口。
究竟是什么代表了这个界面?任何接口都包含未实现的方法声明。有什么方法?
在线学习文章我发现了这个链接:http://docs.spring.io/autorepo/docs/spring/3.2.3.RELEASE/javadoc-api/org/springframework/context/annotation/EnableAspectJAutoProxy.html
此处显示了 JDK代理用于AOP行为的示例,但我对之前的界面使用有一些疑问。
因此,正如您在此链接中所看到的那样:
AppConfig 配置类
@Configuration
@EnableAspectJAutoProxy
public class AppConfig {
@Bean
public FooService fooService() {
return new FooService();
}
@Bean
public MyAspect myAspect() {
return new MyAspect();
}
}
我认为 @EnableAspectJAutoProxy 允许使用 JDK代理来添加方面行为(是真的吗?)
在这个课程中定义2个豆 FooService 和 MyAspect 。
public class FooService { //各种方法 }
MyAspect 这是一个@ Aspect风格的方面:
@Aspect 公共课MyAspect { @Before(“执行(* FooService +。*(..))”) public void advice(){ //根据需要建议FooService方法 } }
在上面的场景中,@ EnableAspectJAutoProxy确保正确处理MyAspect并将 FooService代理混合在它所提供的建议中。
所以我的怀疑是:如果 FooService bean被代理,为什么它没有显式实现任何接口,因为(我认为)必须是JDK代理?我错过了什么?
Tnx