如何丢弃扔掉的@Injected豆?

问题描述 投票:0回答:1

我的ExampleBean仅在创建时需要UsefulBean1中的信息。因此,在获取所需信息后,我可以丢弃UsefulBean1实例。

@ManagedBean
public class ExampleBean {

   private int value;

   @Inject
   public void setUseful(UsefulBean usefulBean){
        this.value = usefulBean.getValue();
        //bye, bye usefulBean. see ya.
   }
}

但是我的ExampleBean2在创建时需要结合UsefulBean1UsefulBean2的信息吗?

我知道我可以得到它们@Injected,并在@PostConstruct方法上组合信息:

@ManagedBean
public class ExampleBean2 {

   private int value;

   @Inject 
   private UsefulBean1 usefulBean1;

   @Inject 
   private UsefulBean2 usefulBean2;

   @PostConstruct
   public void init(){
        this.value = this.usefulBean1.getValue() + this.usefulBean2.getValue();
        //from this point on, the usefulBeans fields are useless...
        this.usefulBean1 = null;
        this.usefulBean2 = null;

   }
}

但是让我保留这两个不再需要的字段(this.usefulBean1this.usefulBean2)使我有些烦恼。

我尝试了多参数设置方法,无济于事。

这肯定不会破坏任何东西或浪费资源。但是,如果没有将字段用作临时扔掉的变量,代码恕我直言将更加清晰。

是否有必要使用来自其他多个bean的数据来初始化CDI bean,而无需将它们设置为字段?

java dependency-injection cdi idioms
1个回答
0
投票

((首先,@ManagedBean与CDI无关。不应使用。)

[用ExampleBean2进行注释(您在参考代理服务器上的一些评论是合理的猜测)。您可以用@ApplicationScoped@RequestScoped或其他范围来注释它。带有任何范围注释,那么它的行为就像您已使用@Dependent对其进行注释一样。)

喜欢这个:

@Dependent

© www.soinside.com 2019 - 2024. All rights reserved.