का निर्माण किया गया है मेरे पास उत्सुकApplicationScoped
प्रबंधित बीन्स का एक गुच्छा है। उनमें से कुछ को ManagedProperty
एनोटेशन द्वारा दूसरों में इंजेक्शन दिया जाता है, जो निर्भरता का पेड़ बनाते हैं। प्रत्येक निर्भर बीन निर्माण के बाद अपने माता-पिता का उपयोग करता है।उत्सुक अनुप्रयोग स्कोप्ड प्रबंधित बीन्स कई बार
हालांकि, ऐसा लगता है कि प्रत्येक इंजेक्शन के लिए एक नया उदाहरण बनाया गया है, इस प्रकार पिछले मैनिपुलेशन पूर्ववत कर दिया गया है। मेरी समझ के लिए, ApplicationScoped
बीन केवल एक बार बनाया जाना चाहिए। क्या मैंने गलत समझा है या यह क्यों हो रहा है? क्या ऐसा इसलिए है क्योंकि वे उत्सुक हैं?
यहाँ एक उदाहरण है:
ParentBean.java
package example;
import javax.annotation.PostConstruct;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
@ManagedBean(eager = true)
@ApplicationScoped
public class ParentBean
{
static int initCount = 0;
// ...
@PostConstruct
public void init()
{
++initCount; // Will end up being between 1 and 3. Expected always 1.
// ...
}
}
Child1Bean.java
package example;
import javax.annotation.PostConstruct;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
@ManagedBean(eager = true)
@ApplicationScoped
public class Child1Bean
{
@ManagedProperty("#{parentBean}") ParentBean parentBean;
public ParentBean getParentBean()
{
return parentBean;
}
public void setParentBean(ParentBean parentBean)
{
this.parentBean = parentBean;
}
@PostConstruct
public void init()
{
// manipulate parentBean
}
}
Child2Bean.java
package example;
import javax.annotation.PostConstruct;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
@ManagedBean(eager = true)
@ApplicationScoped
public class Child2Bean
{
@ManagedProperty("#{parentBean}") ParentBean parentBean;
public ParentBean getParentBean()
{
return parentBean;
}
public void setParentBean(ParentBean parentBean)
{
this.parentBean = parentBean;
}
@PostConstruct
public void init()
{
// manipulate parentBean
}
}
क्या आप एक कोड उदाहरण दे सकते हैं कि आप इसे कैसे करते हैं? –
ठीक है, मैंने एक उदाहरण जोड़ा। – Spomf
नहीं लगता कि मैं किसी भी परिवर्तन करना होगा, लेकिन '@ManagedProperty कोशिश (value =" # {parentBean} ")', – Daniel