Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Springbean实现接口_Spring_Spring Mvc - Fatal编程技术网

Springbean实现接口

Springbean实现接口,spring,spring-mvc,Spring,Spring Mvc,在上述场景中,自动连接失败,出现异常“illegalArgumentException:参数类型不匹配”。当我从MyService中删除implements服务时,一切正常 我在applicationContext.xml中搜索并找到了成功自动布线的位置,它成功了。 我还发现spring在使用@Transactional时使用JDK代理 我有些困惑 @Transactional与代理的关系 为什么spring对实现接口的bean使用JDK代理 为什么需要将放在applicationContext

在上述场景中,自动连接失败,出现异常“
illegalArgumentException:参数类型不匹配
”。当我从MyService中删除
implements服务时,一切正常

我在applicationContext.xml中搜索并找到了成功自动布线的位置
,它成功了。 我还发现spring在使用@Transactional时使用JDK代理

我有些困惑

  • @Transactional与代理的关系
  • 为什么spring对实现接口的bean使用JDK代理
  • 为什么需要将
    放在applicationContext.xml中

  • 谁能解释一下吗?或者请参阅任何文章或博客

    代理是Spring实现声明式事务管理的方式。是回答你所有问题的最佳场所

    关于Spring框架的声明性事务支持,需要掌握的最重要的概念是,这种支持是通过AOP代理启用的,并且事务建议是由元数据(目前基于XML或注释)驱动的。AOP与事务元数据的结合产生了一个AOP代理,该代理使用TransactionInterceptor和适当的PlatformTransactionManager实现来围绕方法调用驱动事务

    服务器上的代理目标类属性 元素控制为哪种类型的事务代理创建 用@Transactional注释注释的类。如果 代理目标类属性设置为true,则基于类的代理 创建。如果代理目标类为false或属性为 省略,创建标准的基于JDK接口的代理。(见 第8.6节“代理机制”,用于讨论不同 代理类型。)


    代理是Spring实现声明性事务管理的方式。是回答你所有问题的最佳场所

    关于Spring框架的声明性事务支持,需要掌握的最重要的概念是,这种支持是通过AOP代理启用的,并且事务建议是由元数据(目前基于XML或注释)驱动的。AOP与事务元数据的结合产生了一个AOP代理,该代理使用TransactionInterceptor和适当的PlatformTransactionManager实现来围绕方法调用驱动事务

    服务器上的代理目标类属性 元素控制为哪种类型的事务代理创建 用@Transactional注释注释的类。如果 代理目标类属性设置为true,则基于类的代理 创建。如果代理目标类为false或属性为 省略,创建标准的基于JDK接口的代理。(见 第8.6节“代理机制”,用于讨论不同 代理类型。)

    public interface Service {
    
      public void doSomething();
    }
    
    @Service
    public class MyService implements service{
    
          @Transactional 
          public void doSomething(){
          }
    }
    
    @Controller
    public class MyController {
    
      @Autowired
      private MyService service;
    }