当前位置: 首页 > 知识库问答 >
问题:

同类型不同参数的spring bean与另一个函数参数的混淆

吕自怡
2023-03-14

为了自定义LettuceConnectionFactory,我创建了两个函数,它们具有相同的返回类型和不同的参数,一个是单节点配置,另一个是集群配置。守则如下:

@Component
@Configuration
public class RedisConfig {

    @Bean(name = "singleFactory")
    public LettuceConnectionFactory createSingleFactory(RedisSingleConfig redisSingleConfig){...}

    @Bean(name = "clusterFactory")
    public LettuceConnectionFactory createClusterFactory(RedisClusterConfig redisClusterConfig){...}

}

调用它们时,返回值(LettuceConnectionFactory)是另一个函数的参数。守则如下:

@Autowired
private RedisActivityClusterConfig testConfig;

@Autowired
private RedisItemConfig redisItemConfig;

@Autowired
private RedisConfig redisConfig;

@Autowired
private StringRedisTemplate redisTemplate;

@Test
public void test(){
    redisTemplate.setConnectionFactory(redisConfig.createClusterFactory(testConfig));
    ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
    System.out.println(valueOperations.get("test"));
}

但是spring会报告没有类型为'org.springframework.data.redis.connection.redisconnectionFactory'的合格bean可用:预期为单个匹配bean,但找到了2:singleFactory,ClusterFactory

由于项目稍微复杂一些,所以有很多redis单服务器A、B、C。和集群服务器A、B、C...,它们有不同的ip、端口和池策略。我最初的想法是,通过将RedisConfig_A、RedisConfig_B、RedisConfig_C等参数注入到不同的redisConfig中,动态生成不同的lettuceConnectionFactorys,然后使用这些lettuceConnectionFactorys创建定制的redistemplates。我的困惑是,这些对象:重新配置、生菜ConnectionFactory是否可以被自动化?我试过很多方法,但都不起作用...

共有1个答案

昌山
2023-03-14

@autowired注释告诉Spring注入点在哪里(即需要在哪里进行注入)。在找到这样的注入点时,Spring会尝试找到一个相同类型的配置bean(通过@bean配置),如果找到这样的bean,就会将其注入到注入点。

如果它找到两个或更多这样的bean,它将抛出异常。为了避免异常,我们必须使用@qualifier注释。

 类似资料:
  • 我想使返回数据类型的的函数与传入的参数的数据类型相同。例如,我会这样调用函数: 因为我将一个传递给,所以它返回了一个

  • 在TypeScript中,可以用“Rest参数”声明函数: 假设我声明了另一个调用的函数: 编译器产生以下消息: 提供的参数与调用目标的任何签名都不匹配:无法将类型“string”应用于类型为“string[]”的参数2。 如何才能调用将提供的参数?

  • 我在Java中有两个几乎相同的方法。唯一的区别是它们有不同的参数类型。它们使用泛型并返回输入参数的类型T。我怎样才能摆脱重复的代码?下面是我的两个方法。最后,它们都使用不同的类型调用Spring。否则,方法是相同的。

  • 当我多次调用同一个函数时,每次都传递了不同的参数,我会这样做: 有没有更方便的方法做到这一点呢?

  • 因此,我正在创建一个用户API,并尝试在登录前调用getUserByEmail()。我的问题是,我得到了一个不明确的处理程序方法映射为HTTP路径错误。 我知道我的问题与我有一个相同但参数类型不同的GET有关。任何帮助都将不胜感激!

  • 本文向大家介绍PowerShell函数中把参数传入另一个函数的函数传参例子,包括了PowerShell函数中把参数传入另一个函数的函数传参例子的使用技巧和注意事项,需要的朋友参考一下 本文介绍在自定义PowerShell函数时,可以使用@PSBoundParameters来将参数传递给另一函数。 下面,我们来创建一个Get-BIOS的函数, 在这个函数中,我们并没有作任何实际的操作,只是将输入的参