java - Spring 组件扫描没有无参数构造函数的 bean

标签 java spring

@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/

相关文章:

java - Spring -> org.hibernate.HibernateException : Illegal attempt to associate a collection with two open sessions

mysql - OneToOne Spring JPA MySQL LAZY加载N+1选择

java - 如何使用 websocket 范围测试组件?

java - 如何在 Spring JPA 中使用 SQL View ?

java - 如何获取显示标签中对应行的id

java - 如何阻止 ANTLR 抑制语法错误?

java - 检查目录是否可以打开并列出其文件

java - 如何显示 Spring 和 MyBatis 中的 SQL 错误?

Java 从 List<List<float[]>> 中删除重复项

java - 为什么这个错误: Could not find class 'oauth.路标.http.HttpParameters