从jar文件中注入一个引用bean,没有定义名为***的bean被抛出异常

时间:2014-09-08 11:41:41

标签: java spring spring-mvc dependency-injection

<bean id="org.sakaiproject.vidyayug.tool.SakaiStyleSelectorInterceptor" 
class="org.sakaiproject.vidyayug.tool.SakaiStyleSelectorInterceptor"> 
<property name="worksiteManager"> 
<ref bean="org.sakaiproject.metaobj.worksite.mgt.WorksiteManager"/> 
</property> 
</bean>

我从jar文件中注入ref bean .. 例外是:

Cannot resolve reference to bean 'org.sakaiproject.metaobj.worksite.mgt.WorksiteManager' while setting bean property 'worksiteManager'; 
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.sakaiproject.metaobj.worksite.mgt.WorksiteManager' is defined

3 个答案:

答案 0 :(得分:0)

您必须添加

<bean id="org.sakaiproject.metaobj.worksite.mgt.WorksiteManager" class="org.sakaiproject.metaobj.worksite.mgt.WorksiteManager"/>

在您的应用程序上下文中。

Bean ID和类名不是一回事,即使你给它们相同的值。

bean id应该是一个用来引用bean isntance的“方便”名称,而class是从classpath(jar或你的类文件夹或其他)加载bean的实际完全限定类名。 / p>

答案 1 :(得分:0)

这样做,给一个bean id,然后通过调用id来调用引用。

  <bean id="Order" class="com.classes.OrderPizza">
    <property name="pizzaTemp" ref="ChickenPizza"></property>
  </bean>

<bean id="ChickenPizza" class="com.classes.ChickenPizza"></bean>
<bean id="PaneerPizza" class="com.classes.PaneerPizza"></bean>

答案 2 :(得分:0)

问题是您在没有实例化的情况下引用bean。以这种方式纠正您的代码:

<bean id="org.sakaiproject.vidyayug.tool.SakaiStyleSelectorInterceptor" class="org.sakaiproject.vidyayug.tool.SakaiStyleSelectorInterceptor"> 
    <property name="worksiteManager"> 
        <bean class="org.sakaiproject.metaobj.worksite.mgt.WorksiteManager"/> 
    </property> 
</bean>

注意您还必须确保在项目二进制文件中部署了jar