gpt4 book ai didi

Spring boot - @Component注解创建两个相同类型的bean

转载 作者:行者123 更新时间:2023-12-02 15:50:56 27 4
gpt4 key购买 nike

当我将 @Component 注释添加到类中时,它会创建两个相同类型(类类型)的 bean,并且收到一条错误消息,指出没有唯一的 bean 标识符。

但是当我删除@Component注释时,我只得到一个bean。

我看不到另一个 bean 是在哪里创建的。

这是我添加 @Component 的类:

package main.serviceconfiguration;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
/* prefix of key in application.properties*/
@ConfigurationProperties("")
public class ServiceConfiguration {

/* declare key suffixes here */

/* Then add getters and setters for the keys' values */
}

我在哪里@Autowire bean:

@Controller
@Service
@Configuration
@RequestMapping("/users")
@EnableConfigurationProperties(ServiceConfiguration.class)
public class UserRestController {

@Autowired
private UserRepository repo;

@Autowired
private ServiceConfiguration config;
...
}

但是,在 Eclipse IDE 的包资源管理器中,我看到在 Spring Elements -> Beans -> @Component 注释下,有两个 main.serviceconfiguration.ServiceConfiguration 类型的 bean。

其中一个名为serviceConfiguration另一个称为 main.serviconfiguration.ServiceConfiguration

日志中的错误:

No qualifying bean of type [main.serviceconfiguration.ServiceConfiguration] is defined: expected single matching bean but found 2: serviceConfiguration,main.serviceconfiguration.ServiceConfiguration

最佳答案

这很奇怪。

您可以做的是强制为组件指定一个名称,例如@Component("foo")然后与 @Autowired 一起添加 @Qualifier("foo")

但这并没有解决根本原因。

关于Spring boot - @Component注解创建两个相同类型的bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32123027/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com