Spring究竟如何使用JDK代理?

时间:2015-03-21 12:37:46

标签: java spring spring-mvc design-patterns architecture

我对使用Spring可以使用的两种代理有一些疑问。

enter image description here

因此,根据我的理解, JDK代理类型是Spring使用的默认类型,它基于接口实现。

从我所理解的(但我绝对不确定这个断言,纠正我,如果它是错的)使用 JDK代理对象“包裹”的对象的类和代理本身必须实现一个接口。

究竟是什么代表了这个界面?任何接口都包含未实现的方法声明。有什么方法?

在线学习文章我发现了这个链接:http://docs.spring.io/autorepo/docs/spring/3.2.3.RELEASE/javadoc-api/org/springframework/context/annotation/EnableAspectJAutoProxy.html

此处显示了 JDK代理用于AOP行为的示例,但我对之前的界面使用有一些疑问。

因此,正如您在此链接中所看到的那样:

  1. AppConfig 配置类

     @Configuration
     @EnableAspectJAutoProxy
     public class AppConfig {
         @Bean
         public FooService fooService() {
             return new FooService();
         }
    
         @Bean
         public MyAspect myAspect() {
             return new MyAspect();
         }
     }
    
  2. 我认为 @EnableAspectJAutoProxy 允许使用 JDK代理来添加方面行为(是真的吗?)

    在这个课程中定义2个豆 FooService MyAspect

    1. FooService 这是典型的POJO组件:
    2. public class FooService {      //各种方法 }

      1. MyAspect 这是一个@ Aspect风格的方面:

        @Aspect  公共课MyAspect {      @Before(“执行(* FooService +。*(..))”)      public void advice(){          //根据需要建议FooService方法      }   }

      2. 在上面的场景中,@ EnableAspectJAutoProxy确保正确处理MyAspect并将 FooService代理混合在它所提供的建议中。

        所以我的怀疑是:如果 FooService bean被代理,为什么它没有显式实现任何接口,因为(我认为)必须是JDK代理?我错过了什么?

        Tnx

0 个答案:

没有答案