![](/img/trans.png)
[英]NoSuchBeanDefinitionException : No bean available in Spring
[英]Spring NoSuchBeanDefinitionException when accessing a bean from root context
我有一個根上下文文件(applicationContext.xml)和一個子上下文文件(subContext.xml)。
當我嘗試從subContext.xml中的applicationContext.xml訪問Bean時,出現NoSuchBeanDefinitionException
subContext.xml bean:
<bean id="myInfo" factory-bean="myInfoFactory"
factory-method="getInstance" scope="request">
<aop:scoped-proxy proxy-target-class="true" />
applicationContext.xml bean:
<bean id="myInfoFactory"
class="org.wcw.factory.MyInfoFactory" />
我得到的錯誤是
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'myInfoFactory' is defined
web.xml中
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
portlet.xml中
<portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
<init-param>
<name>contextConfigLocation</name>
<value>/WEB-INF/subContext.xml</value>
</init-param>
如果我將myInfoFactory bean聲明從applicationContext.xml移到subContext.xml,則不再拋出該異常。 不知道為什么在applicationContext.xml中聲明時它不可見。 由於我的環境,我無法將bean永久移動到subContext.xml。 MyInfoFactory類
public class MyInfoFactory {
private Logger log;
@Autowired
private PortletRequest request;
...
public MyInfo getInstance(PortletRequest request) {
}
...
}
這個問題不關乎配置本身,而是關乎您試圖在哪里恢復該特定的bean。
如果嘗試從父應用程序上下文中定義的Bean注入子ApplicationContext(subContext.xml)中定義的請求范圍的Bean,則偵聽器(applicationContext.xml)給出的Bean將無法插入“看到”那個特殊的東西。
這種關系在另一個方向上起作用。 子級實際上可以看到父級容器中定義的每個子級。
一種解決方案是將您的請求代理移至父級,因為您可以做到這一點。 但是,如果在嘗試使用該特定bean時沒有可用請求,則會拋出運行時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.