有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring究竟如何使用JDK代理?

我对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

这里显示了一个用于AOP行为的JDK代理的示例,但我对以前的接口使用有一些疑问

因此,正如您在本链接中看到的,有:

  1. AppConfig配置类

     @Configuration
     @EnableAspectJAutoProxy
     public class AppConfig {
         @Bean
         public FooService fooService() {
             return new FooService();
         }
    
         @Bean
         public MyAspect myAspect() {
             return new MyAspect();
         }
     }
    

我认为,@enableAspectProxy允许使用JDK代理添加方面行为(是真的吗?)

在这个类中定义了两个beanFooServiceMyAspect

  1. FooService这是一个典型的POJO组件:

公共类餐饮服务{ //各种方法 }

  1. MyAspect这是一个@Aspect样式的方面:

    @方面 公共类MyAspect{ @在(“执行(*FooService+.*(..))之前) 公众谘询({ //建议适当的维修方法 } }

在上述场景中,@EnableAspectJAutoProxy确保MyAspect将得到正确处理,并且FooService将在其提供的建议中被代理

所以我的疑问是:如果FooServicebean是代理的,为什么它不显式地实现任何接口,因为(我认为)必须是JDK代理?我错过了什么

Tnx


共 (0) 个答案