bean 不加id 导致被创建多个
博客专区 > java9 的博客 > 博客详情
bean 不加id 导致被创建多个
java9 发表于1年前
bean 不加id 导致被创建多个
  • 发表于 1年前
  • 阅读 12
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: bean 不加id 导致被创建多个

最近在项目中使用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 不会重复,不会重复初始化。(仅猜想)

共有 人打赏支持
粉丝 13
博文 65
码字总数 25460
×
java9
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: