Как динамически изменить свойство пружинного боба, который автоматически подключен? - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть решение для этого вопроса. Но я не уверен, что это правильно. У меня есть бин, созданный со свойством, которое будет меняться при каждом запросе когда я автоматически связываю этот 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), так как канал не подключен автоматически. Во-вторых, я вызываю сеттер, чтобы изменить состояние бина, что я не правильно делать. Любые другие альтернативы здесь?

...