如何动态更改自动装配的Spring bean的属性?

时间:2019-04-05 21:46:55

标签: spring spring-boot dependency-injection autowired

我对这个问题有解决方案。但是我并不肯定这是正确的事情。我有一个带有属性的bean,该属性将根据请求进行更改。 当我自动装配该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行)进行构造。其次,我正在调用setter来更改不是我自己的bean的状态,这是正确的做法。还有其他选择吗?

0 个答案:

没有答案