java - How to pass parameter to injected class from another class in CDI? -


i new cdi, tried find solution question, but, couln't found any. question suppose have 1 class being injected(a) from, value(topass) getting injected, want pass same value(topass) class b, getting injected class a.

public class  {     string topass = "abcd"; // value not hardcoded      @inject     private b b; }  public class b  {     private string topass;      public b(string topass)     {         topass = topass;     } } 

can please me in this? note: cannot initialize topass variable of b in same way have initialized in a, there restriction it. in spring have done easily, but, wanted in cdi.

you have options:

1. set topass variable b @postconstruct method of bean a:

@postconstruct public void init() {     b.settopass(topass); } 

or

2. create producer topass variable , inject bean a , b.

producer:

@produces @topass public string producetopass() {     ...     return topass; } 

injection:

@inject @topass string topass;  

or

3. if bean a not dependent scoped bean can use provider interface obtain instance of bean a:

public class b   {     @inject     provider<a> a;      public void dosomeactionwithtopass() {         string topass = a.get().gettopass());         ...     } 

but should not use topass constructor or @postconstruct method.


Comments

Popular posts from this blog

php - Invalid Cofiguration - yii\base\InvalidConfigException - Yii2 -

How to show in django cms breadcrumbs full path? -

ruby on rails - npm error: tunneling socket could not be established, cause=connect ETIMEDOUT -