文档章节

bean 不加id 导致被创建多个

java9
 java9
发布于 2016/07/13 15:08
字数 412
阅读 35
收藏 0

最近在项目中使用spring session时,碰到一个问题,在tomcat7可以正常运行,但是在8不能运行。报如下错误:

 org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.springframework.data.redis.connection.RedisConnectionFactory] is defined: expected single matching bean but found 3: org.springframework.data.redis.connection.jedis.JedisConnectionFactory#0,org.springframework.data.redis.connection.jedis.JedisConnectionFactory#1,org.springframework.data.redis.connection.jedis.JedisConnectionFactory#2

因为spring-session 1.2 依赖了spring 4.2.5 (项目中使用的是3.2.2),一开始以为是版本的问题,升级后问题照旧。 spring session的配置是按照官方文档写的:

<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
<bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"/>

项目的配置文件是分多个的,然后import这个。开始怀疑是不是因为有多个配置文件的原因,就重新建了一个项目,只使用spring session,同样如下配置session(不过只有一个配置文件)。结果可以运行成功。但是不可能把所有的配置都写在一起。
想了一下,什么情况下spring 会创建多个同样类型的bean,照理说只会创建一个才对。最后在查看spring redis的文档时,发现文档中的配置加了一个 ==id== ,然后果断把两个bean都加上了id, 最后运行成功了。
造成这种错误的原因有可能是spring 在初始化bean 的时候还没有初始化完,其他的bean 依赖这个bean的时候,发现没有,然后告诉spring 我需要这个bean,spring 就又初始化这个bean一次,最后就会出现多个同种类型的bean。但是加上id后同种类型的bean id 不会重复,不会重复初始化。(仅猜想)

© 著作权归作者所有

共有 人打赏支持
java9
粉丝 13
博文 65
码字总数 25460
作品 0
武汉
后端工程师
Spring中bean的作用域

Bean简介: 在Spring中,那些组成你应用程序的主体(backbone)及由Spring IoC容器所管理的对象,被称之为bean。 简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与...

Robinson_lu
2015/06/17
0
0
spring bean的作用域

1、singleton:单例模式,Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。 <bean id="empServiceImpl" class="c...

liujiest
2016/05/02
151
0
经典Java面试题-Spring bean 作用域

[面试原题] Spring中定义bean的作用域时,使用singleton和prototype有何区别? [正确答案] singleton作用域:当把一个Bean定义设置为singleton作用域时,Spring IoC容器中只会存在一个共享的...

博为峰教研组
2016/10/28
23
0
spring学习——Ioc基础三(Ioc配置使用)

一、XML配置的结构 一般配置文件结构如下: <beans> <import resource=”resource1.xml”/> <bean id=”bean1”class=””></bean> <bean id=”bean2”class=””></bean> <bean name=”bea......

小风89
2015/10/11
652
0
bean创建过程、spring BeanFactory的实现、spring aware

Bean的创建过程: Spring beanFactory的工厂模式实现: 解析标签,存到一个Map beans中 People o = (People)factory.getBean("p"); 因为map存的是object类型,所以取出时需要强制类型转换 ...

sun_tantan
08/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
6
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
12
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
18
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
12
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部