关于被代理的bean的注入的问题

环境

  • java
  • spring mvc

    遇到的问题

    项目在增加AOP的实现后,发现某个类无法@Autowire一个实例,显示如下的exception: No qualifying bean of type….

    问题的分析

  • 项目原本不会出现这个问题
  • 是由于增加AOP引发的问题
  • AOP会代理一些bean, 默认下使得一些bean的类型变成了这些bean的接口类型
    由此便猜测到无法@Autowire的那个bean的引用没有使用接口类型

    问题总结

  • 一般最好使用接口作为引用

    ps

    老代码加新功能,遇到这种问题,还是有点小坑的

时间: 2024-12-08 02:44:07

关于被代理的bean的注入的问题的相关文章

Spring单例Bean中注入多例Bean

问题: 当在一个单例Bean中注入一个多例Bean的时候,是获取不到那个多例对象的,因为,单例在初始化的时候,就直接初始化,这个多例Bean啦, 一直获取的是第一次初始化的Bean 配置文件: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="htt

关于SpringBoot bean无法注入的问题(与文件包位置有关)改变自动扫描的包

参考网址:http://blog.csdn.net/u014695188/article/details/52263903 问题描述:SpringBoot bean无法注入的问题(与文件包位置有关) 问题分析:SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描! 解决方案:@ComponentScan注解进行指定要扫描的包以及要扫描的类. @ComponentScan(basePackages={"cn.kfit","org.

开涛spring3(12.2) - 零配置 之 12.2 注解实现Bean依赖注入

12.2  注解实现Bean依赖注入 12.2.1  概述 注解实现Bean配置主要用来进行如依赖注入.生命周期回调方法定义等,不能消除XML文件中的Bean元数据定义,且基于XML配置中的依赖注入的数据将覆盖基于注解配置中的依赖注入的数据. Spring3的基于注解实现Bean依赖注入支持如下三种注解: Spring自带依赖注入注解: Spring自带的一套依赖注入注解: JSR-250注解:Java平台的公共注解,是Java EE 5规范之一,在JDK6中默认包含这些注解,从Spring2.

Bean的注入

Bean有两种注入方法:一是构造方法注入,使用<constructor-arg>,有几个参数,就注入几个.构造方法的优点: 使用强依赖契约. 依赖都通过构造函数设置了,减少使用set方法的代码. 只能通过构造函数设置类的属性,保证了属性的不可变性. 构造方法的缺点: 当Bean需要很多依赖时,构造函数的参数列表太长. 当一个对象已经有很多种构造方法,很难再提出不同的构造函数. 构造函数中有两个以上是想同类型的,很难确定每个参数的用途. 构造方法不利于自身的继承. 二是使用set方法注入,使用&

spring4.0.6最新稳定版新特性学习,注解自动扫描bean,自动注入bean(二)

Spring4.0的新特性我们在上一章已经介绍过了.包括它对jdk8的支持,Groovy Bean Definition DSL的支持,核心容器功能的改进,Web开发改进,测试框架改进等等.这张我们主要介绍spring4.0的自动扫描功能,以及对bean的过滤等特性进行学习. 好吧,废话少说,我们来看看代码吧. package com.herman.ss.test; import org.springframework.context.ApplicationContext; import org

spring中Bean的注入参数详解

字面值    一般指可用字符串表示的值,这些值可以通过<value>元素标签进行注入.在默认情况下,基本数据类型及其封装类.String等类型都可以采取字面值注入的方式,Spring容器在内部为字面值提供了编辑器,它可以将以字符串表示的字面值转换为内部变量的相应类型.    配置信息:    <bean id="car" class="com.luxl.domain.Car">        <property name="m

spring中Bean的注入类型

1.属性注入    即通过setXxx()方法注入Bean的属性值或依赖对象,由于属性注入方式具有可选择性和灵活性高的优点,因此属性注入是实际应用中最常采用的注入方式.    属性注入要求Bean提供一个默认的构造参数,并为需要注入的属性提供对应的Setter方法.Spring先调用Bean的默认构造参数实例化Bean对象,然后通过反射的方式调用Setter方法注入属性值.    需要指出的是:Spring只会检查Bean中是否有对应的Setter方法,至于Bean中是否有对应的属性变量则不做要

SpringBoot拦截器中Bean无法注入(转)

这两天遇到SpringBoot拦截器中Bean无法注入问题.下面介绍我的思考过程和解决过程: 1.由于其他bean在service,controller层注入一点问题也没有,开始根本没意识到Bean无法注入是在拦截器中无效的问题,一直在查找注解指定的包在哪里配置的,然而却找不到配置,Springboot是用java类的形式加载配置的.在网络的某个角落看到这样的说法: SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!"Application类&

Spring之Bean的注入

Bean的配置中介绍的是Bean声明问题,在哪声明怎么声明的问题.Bean的注入是怎么实例化,怎么注入的问题.Bean注入的方式有两种,一种是在XML中配置,另一种则是使用注解的方式注入. 一.XML方式注入 XML方式注入一般有三种方式:属性注入.构造函数注入和工厂方法注入. 一.属性注入在传统的对象实例化时可以通过new class(),然后通过setXXX()方法设置对象的属性值或依赖对象,属性注入也是采用这种方式,只是Spring框架会在内部完成这些操作,它会先调用Bean的默认构造函数