У меня есть решение для этого вопроса. Но я не уверен, что это правильно. У меня есть бин, созданный со свойством, которое будет меняться при каждом запросе
когда я автоматически связываю этот bean-компонент, я вручную вызываю свойство setter
Я думаю, что есть лучший способ сделать это или даже изменить дизайн
Вот боб, по которому я буду автопроводить
@Component
public class Handler1 {
private final Channel inboundChannel;
//1 public Handler1(Channel inboundChannel){
//2 this.inboundChannel=in;
//3 }
public void setChannel(Channel in){
this.inboundChannel=in;
}
}
С моей стороны, я делаю
@Component
public class Client {
@Autowired
Handler1 myHandler;
@Override
public void channelActive(ChannelHandlerContext ctx){
final Channel inboundChannel = ctx.channel(); //4
handler.setChannel(inboundChannel);
// Start the connection attempt.
Bootstrap b = new Bootstrap();
b.group(inboundChannel.eventLoop())
.channel(ctx.channel().getClass())
.handler(myHandler)
.option(ChannelOption.AUTO_READ, false);
.....
}
Прежде всего, я не могу создать конструктор с параметрами (строка 1-3), так как канал не подключен автоматически. Во-вторых, я вызываю сеттер, чтобы изменить состояние бина, что я не правильно делать. Любые другие альтернативы здесь?