@Component
public class StringConsumer {
@Autowired
MessageConsumer messageConsumer;
public void m1(Channel channel) {
//MessageConsumer messageConsumer=new MessageConsumer(channel);
//how to use spring to do this, initialize MessageConsumer with channel instance value for this class.
}
}
@Component
public class MessageConsumer implements Consumer {
public MessageConsumer(Channel channel) {
this.channel=channel;
}
public MessageConsumer(Channel channel, String type) {
this.channel=channel;
}
}
如何使用 spring 初始化 MessageConsumer(new Channel()) 并在其他类中使用自动连接。 如何初始化类的不同构造函数。
最佳答案
在类中创建一个这样的bean
@Configuration
class ConfigClass {
@Bean
public MessageConsumer createMessageConsumer() {
MessageConsumer messageConsumer = new MessageConsumer(new Channell());
return messageConsumer;
}
}
删除 MessageConsumer 类上的 @Component
。如果你这样做是多余的。
现在,如果您在任何类中 Autowire MessageConsumer,它都会返回在上述方法中创建的 bean(已初始化 channel )。
关于java - Spring 组件扫描没有无参数构造函数的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51702189/