在控制层用resource注入service 而service中用了@Transaction注解时
报 Bean named 'xxxService' must be of type [com.xxx.xxxService], but was actually of type [$Proxy6]错误 解决如下:
1.应注入service的接口而非实现类
2.设置proxy-target-class="true" <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>加入cglib包
引用
在spring中@Transaction是通过AOP实现的,而spring对AOP有两种实现方式,一种是动态代理,它是通过接口方式实现的,要求所代理的类一定是实现了某一个接口,对一般的类就无法代理,spring默认是这种;通过设置proxy-target-class="true",则是使用CGLIB实现AOP,CGLIB直接生成二进制码,使得普通类也可以实现AOP。在没有设置proxy-target-class="true"时,使用动态代理,是一个临时生成的类,如proxy17,它不是@Resource指定的类,因此出现了上述错误。
分享到:
相关推荐
Spring 框架中,@Resource 注解是一种常用的依赖注入方式,用于将对象注入到应用程序中。但是,在实际开发中,经常会遇到 @Resource 注解的对象为 null 的问题。本文将详细介绍 Spring 中 @Resource 注解解决 null ...
除了以上三种方式,Spring还提供了基于注解的元数据注入,如`@Resource`、`@Qualifier`等,以及XML配置文件中的`<bean>`标签等方式进行依赖注入。在实际开发中,可以根据需求选择合适的方式,通常推荐使用构造器注入...
在 Spring 2.5 引入了 @Autowired 注释,我们平常直接引用的时候很少注意这些,只是自己写好了一个方法或者 springboot 自动配置好的一个方法我们要在另一个类中去调用,这个时候,我们就会采用该注释。 2. @...
在Spring框架中,`@Autowired`和`@Resource`注解是两个常见的依赖注入(DI, Dependency Injection)工具,它们都是用来解决组件之间的耦合问题,使得代码更加灵活和可测试。然而,这两个注解在具体使用时有一些关键性...
在Spring框架中,`@Resource`和`@Component`是两个非常重要的注解,它们用于不同的目的,但都与依赖注入(Dependency Injection, DI)息息相关。这篇文章将深入探讨这两个注解,以及它们如何在Spring应用中协同工作...
在Spring早期版本中,依赖注入主要通过XML配置文件实现,即在配置文件中明确指定哪些bean之间存在依赖关系,然后由Spring容器负责在运行时创建并装配这些bean。 然而,随着Java注解的普及,Spring也引入了基于注解...
在Spring框架中,`@Resource`注解是一个重要的组件注入工具,主要用于管理bean之间的依赖关系。这个注解来源于JSR 250规范,被Spring框架所支持并扩展。在这个"spring使用resource注解的demo"中,我们将深入探讨如何...
Spring框架是由Rod Johnson创建的一个开源项目,最初是为了解决企业级应用开发中的复杂性问题而诞生的。Spring框架的核心特性包括IoC(Inversion of Control,控制反转)、AOP(Aspect Oriented Programming,面向切...
本文将深入探讨Spring依赖注入的概念、工作原理以及如何在实际项目中应用。 依赖注入(Dependency Injection,简称DI)是一种设计模式,它允许组件之间通过外部源来管理其依赖关系,而不是由组件自己来创建或查找...
在Spring 3.0中,注解注入还支持了构造器注入,通过在构造函数参数上使用`@Autowired`,Spring会在实例化bean时调用相应的构造函数并注入对应的依赖。 为了更深入地学习Spring 3.0的注解注入,你可以阅读提供的文档...
凡带有@Component,@Controller,@Service,@Repository 标志的等于告诉Spring这类将自动产生对象,而@Resource则等于XML配置中的ref,告诉spring此处需要注入对象,所以用@Resource就有了ref的功效。 要用注解注入方式...
在Spring框架中,自动装配(Auto-Wiring)是一种简化依赖注入(Dependency Injection,DI)配置的方式,它允许Spring容器自动管理Bean之间的依赖关系。本文将深入探讨如何通过注解(Annotation)和`@Resource`来实现...
Spring框架是Java领域中实现DI的典型代表,提供了多种注解来支持这一机制,其中两个常用的注解是`@Resource`和`@Autowired`。虽然它们都可以用来实现依赖注入,但它们的用法和原理有所不同。 首先,`@Resource`注解...
Spring框架是Java企业级开发中非常重要的一个框架,它通过依赖注入(DI)的方式极大地简化了企业级应用的开发。Spring提供了多种注解来帮助开发者实现依赖注入,其中包括@Autowired、@Qualifier、@Resource以及@...
Spring依赖注入(Dependency Injection,简称DI)是Java应用开发中的一个重要概念,它是Spring框架的核心特性之一,用于降低组件之间的耦合度,提高代码的可测试性和可维护性。本篇文章将深入探讨Spring依赖注入的...
2. 注解注入:在需要注入依赖的类中,使用`@Autowired`、`@Qualifier`、`@Resource`或`@Inject`等注解标记字段或方法。 3. 配置扫描:在Spring配置文件中,使用`<context:component-scan>`标签指定需要扫描的包,使...
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它极大地提高了代码的可测试性和可维护性。本篇学习笔记将深入剖析Spring依赖注入的原理,通过源码分析帮助我们理解这一核心机制。...
Spring框架的Dependency Injection(DI,依赖注入)是其核心特性之一,它允许开发者在运行时通过容器来管理对象及其依赖关系,而不是硬编码这些依赖。这样可以提高代码的可测试性和可维护性,降低了组件之间的耦合度...
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种核心的设计模式,它允许我们创建松耦合的代码,提高软件的可测试性和可维护性。Spring4版本进一步优化了这一特性,使其更加灵活和强大。本篇文章将...
在Spring中,我们通常使用`@Autowired`、`@Qualifier`、`@Resource`等注解来进行依赖注入。 - `@Autowired`:这个注解用于自动装配依赖,Spring会根据类型或名称匹配bean并注入。如果存在多个相同类型的bean,可以...