我写了一个样例程序,如下所示。
@Configuration
public class MyclassName{
private final List<String> tableIds;
public MyclassName(
List<String> tableIds) {
this.tableIds = tableIds;
}
}
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in MyclassName required a single bean, but 4 were found:
- spring.sleuth.baggage-keys: defined by method 'baggageKeys' in class path resource [org/springframework/cloud/sleuth/autoconfig/TraceBaggageConfiguration.class]
- spring.sleuth.local-keys: defined by method 'localKeys' in class path resource [org/springframework/cloud/sleuth/autoconfig/TraceBaggageConfiguration.class]
- spring.sleuth.propagation-keys: defined by method 'propagationKeys' in class path resource [org/springframework/cloud/sleuth/autoconfig/TraceBaggageConfiguration.class]
- spring.sleuth.log.slf4j.whitelisted-mdc-keys: defined by method 'whiteListedMDCKeys' in class path resource [org/springframework/cloud/sleuth/autoconfig/TraceBaggageConfiguration.class]
Action:
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed
Process finished with exit code 0
类MyClassName
是spring框架所知道的。
因此spring将尝试使用构造函数创建MyClassName
的实例:
public MyclassName(List<String> tableIds)
MyClassName中构造函数的参数0是
list
@Bean(BAGGAGE_KEYS)
@ConfigurationProperties(BAGGAGE_KEYS)
List<String> baggageKeys() {...}
@Bean(LOCAL_KEYS)
@ConfigurationProperties(LOCAL_KEYS)
List<String> localKeys() {...}
@Bean(PROPAGATION_KEYS)
@ConfigurationProperties(PROPAGATION_KEYS)
List<String> propagationKeys() {...}
@Bean(WHITELISTED_MDC_KEYS)
@ConfigurationProperties(WHITELISTED_MDC_KEYS)
List<String> whiteListedMDCKeys() {...}
首先对预期bean进行限定(给出id)
@Bean("myExpectedTableIds")
List<String> myTableIdsProcucerMethod()
然后使用
org.springframework.beans.factory.annotation.qualifier
注释告诉Spring您真正想要的bean:
public MyclassName(@Qualifier("myExpectedTableIds") List<String> tableIds)
问题内容: 如果我有一个像这样的构造函数: 然后,我如何在与构造函数相同的类中的方法中使用变量c和d,因为尝试仅在方法中使用变量名似乎不起作用? 问题答案: 实际上,您的代码将无法编译- 无效。 我认为您的意思是:- 。 然后我如何在与构造函数相同的类中的方法中使用变量c和d 您不能这样做,因为您已将它们声明为局部变量,其范围在构造函数结束执行时终止。 您应该将它们声明为实例变量。
我有一个继承自父类Point的子类行,我没有在子类中使用基类的构造函数,但是我得到了这个错误: '形状。点“不包含接受0个参数的构造函数 这是我的父类: 这是我的孩子班:
问题内容: 所以我正在学习Java。我有一个月的时间,我刚刚了解了构造函数。但是我看不到创建一个的全部目的。为什么我什么时候要使用?我知道它没有主方法,您可以从主类中调用构造函数。任何人都可以启发我这个话题,这对我有很大帮助。 问题答案: 构造函数是用来初始化/设置类实例的对象。 如果您有一个对象需要一些处理才能使用(例如,初始化成员),则应在构造函数中执行此操作。 理想情况下,您永远不应拥有“部
问题内容: 我正在阅读一些代码。在构造函数中,它具有super(),但类实现的接口当然没有构造函数。那么它指的是哪个super()? 问题答案: 指扩展(不是已实现的接口)。在这种情况下是 因此它将在中调用构造函数(不执行任何操作)
问题内容: 我有一个结构,我希望使用一些合理的默认值对其进行初始化。 通常,这里要做的是使用构造函数,但是由于go在传统意义上并不是真正的OOP,所以它们不是真正的对象,也没有构造函数。 我注意到了init方法,但这是在包级别。还有其他类似的东西可以在结构级别使用吗? 如果不是,那么Go中这种事情的公认最佳实践是什么? 问题答案: 实际上有两种公认的最佳实践: 将结构的零值设为明智的默认值。(尽管
问题内容: 以下代码向我返回错误信息: 我不明白。我的代码中的构造函数是第一条语句。我究竟做错了什么? 问题答案: 构造函数名称必须与类名称相同,因此请将类名称更改为或将构造函数名称更改为。 示例 (请注意,在Java中通常第一个字母是大写字母) :