小白踩坑记:spring初始化时出现:factory-bean reference points back to the same bean definition

意思说的是你的factory-bean指向同一个bean定义,经过查看发现,我的类名和方法名一样(忽略大小写,因为当不指定名字时,默认是首字母小写作为bean的名字)

//
@Service
public class JedisPool {
    @Autowired
    RedisConfig redisConfig;
    @Bean
    public redis.clients.jedis.JedisPool jedisPool(){
        JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(redisConfig.getPoolMaxIdle());
        jedisPoolConfig.setMaxTotal(redisConfig.getPoolMaxTotal());
        jedisPoolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait()*1000 );
        //database表示库的个数
        redis.clients.jedis.JedisPool jp=new redis.clients.jedis.JedisPool(jedisPoolConfig,redisConfig.getHost(),redisConfig.getPort(),redisConfig.getTimeout()*1000,redisConfig.getPassword(),0);
        return jp;
    }
}

@Service和@Bean重复创建了一个名字叫jedisPool的bean,导致出现上述错误
解决:1、类名或方法名修改;
2、在创建bean时指定bean的名称(@Bean(“xxx”))

修改类名后,运行正常。

// An highlighted block
package com.dec14.redis;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import redis.clients.jedis.JedisPoolConfig;
@Service
public class JedisPoolFactory {
    @Autowired
    RedisConfig redisConfig;
    @Bean
    public redis.clients.jedis.JedisPool jedisPool(){
        JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(redisConfig.getPoolMaxIdle());
        jedisPoolConfig.setMaxTotal(redisConfig.getPoolMaxTotal());
        jedisPoolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait()*1000 );
        //database表示库的个数
        redis.clients.jedis.JedisPool jp=new redis.clients.jedis.JedisPool(jedisPoolConfig,redisConfig.getHost(),redisConfig.getPort(),redisConfig.getTimeout()*1000,redisConfig.getPassword(),0);
        return jp;
    }
}

2020-12-18 15:44:36.552  INFO 19908 --- [           main] com.dec14.Demo01Application              : Starting Demo01Application using Java 12.0.2 on Fafasir with PID 19908 (D:\java-project\miaosha01\target\classes started by Administrator in D:\java-project\miaosha01)
2020-12-18 15:44:36.553  INFO 19908 --- [           main] com.dec14.Demo01Application              : No active profile set, falling back to default profiles: default
2020-12-18 15:44:37.490  INFO 19908 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-12-18 15:44:37.501  INFO 19908 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-12-18 15:44:37.501  INFO 19908 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.41]
2020-12-18 15:44:37.586  INFO 19908 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-12-18 15:44:37.586  INFO 19908 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 988 ms
2020-12-18 15:44:37.867  INFO 19908 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-12-18 15:44:38.006  INFO 19908 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-12-18 15:44:38.006  INFO 19908 --- [           main] com.dec14.Demo01Application              : Started Demo01Application in 1.733 seconds (JVM running for 2.401)

为中华之崛起而读书!!!
为了梦想

fighting!!!!!
😃😃😃😃😃😃

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值