Java 无法解析对bean';数据源';设置bean属性时';数据源'。factory.NoSuchBean定义异常:

Java 无法解析对bean';数据源';设置bean属性时';数据源'。factory.NoSuchBean定义异常:,java,xml,spring,hibernate,spring-mvc,Java,Xml,Spring,Hibernate,Spring Mvc,这是在我的spring-servlet.xml文件中定义了这个id的bean <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.databaseurl}" p:username="${jdbc.

这是在我的spring-servlet.xml文件中定义了这个id的bean

<bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
        p:driverClassName="${jdbc.driverClassName}"
        p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
        p:password="${jdbc.password}" />
<mvc:resources location="/resources/" mapping="/resources/**"/>
    <mvc:default-servlet-handler/>          
    <bean id="jspViewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/JSP/" />
        <property name="suffix" value=".jsp" />
    </bean>

        <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean>


    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
        p:location="classpath:jdbc.properties" />

    <bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
        p:driverClassName="${jdbc.driverClassName}"
        p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
        p:password="${jdbc.password}" />


    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation">
            <value>classpath:hibernate-cfg.xml</value>
        </property>
        <property name="configurationClass">
            <value>org.hibernate.cfg.AnnotationConfiguration</value>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${jdbc.dialect}</prop>
                <prop key="hibernate.show_sql">true</prop>
                 <prop key="hibernate.connection.SetBigStringTryClob">true</prop>
                <prop key="hibernate.jdbc.batch_size">0</prop>
            </props>
        </property>
    </bean>

    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

        <!-- one of the properties available; the maximum file size in bytes -->
        <property name="maxUploadSize" value="10000000" />
    </bean>

    <tx:annotation-driven />
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
</beans>
这是在WEB-INF文件夹中定义的应用程序上下文文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
</beans>

这是我完整的web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>YummyFoods</display-name>
  <welcome-file-list>
    <welcome-file>/JSP/welcome.jsp</welcome-file>
  </welcome-file-list>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>imageServlet</servlet-name>
    <servlet-class>com.yummyfoods.spring.servlet.ImageServlet</servlet-class>
</servlet>
  <servlet-mapping>
    <servlet-name>imageServlet</servlet-name>
    <url-pattern>/image/*</url-pattern>
</servlet-mapping>
<error-page>
    <error-code>404</error-code>
    <location>/error</location>
</error-page>
</web-app>

美味食品
/JSP/welcome.JSP
org.springframework.web.context.ContextLoaderListener
春天
org.springframework.web.servlet.DispatcherServlet
1.
春天
/
imageServlet
com.yummyfoods.spring.servlet.ImageServlet
imageServlet
/形象/*
404
/错误
这是我的spring-servlet.xml文件

<bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
        p:driverClassName="${jdbc.driverClassName}"
        p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
        p:password="${jdbc.password}" />
<mvc:resources location="/resources/" mapping="/resources/**"/>
    <mvc:default-servlet-handler/>          
    <bean id="jspViewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/JSP/" />
        <property name="suffix" value=".jsp" />
    </bean>

        <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean>


    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
        p:location="classpath:jdbc.properties" />

    <bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
        p:driverClassName="${jdbc.driverClassName}"
        p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
        p:password="${jdbc.password}" />


    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation">
            <value>classpath:hibernate-cfg.xml</value>
        </property>
        <property name="configurationClass">
            <value>org.hibernate.cfg.AnnotationConfiguration</value>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${jdbc.dialect}</prop>
                <prop key="hibernate.show_sql">true</prop>
                 <prop key="hibernate.connection.SetBigStringTryClob">true</prop>
                <prop key="hibernate.jdbc.batch_size">0</prop>
            </props>
        </property>
    </bean>

    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

        <!-- one of the properties available; the maximum file size in bytes -->
        <property name="maxUploadSize" value="10000000" />
    </bean>

    <tx:annotation-driven />
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
</beans>

类路径:hibernate-cfg.xml
org.hibernate.cfg.AnnotationConfiguration
${jdbc.dial}
真的
真的
0

请帮助我找到路。

从外观上看,您正在
DispatcherServlet
上下文配置文件中定义一个数据源,即您指定的
spring servlet.xml
。以及根应用程序上下文文件中的
entityManagerFactory
。根应用程序上下文中的bean不能引用servlet应用程序上下文文件中的bean。您需要将
dataSource
bean移动到
hibernate context.xml
文件中。

从外观上看,您正在
DispatcherServlet
上下文配置文件中定义一个数据源,即指定的
spring servlet.xml
。以及根应用程序上下文文件中的
entityManagerFactory
。根应用程序上下文中的bean不能引用servlet应用程序上下文文件中的bean。您需要将
dataSource
bean移动到
hibernate context.xml
文件中。

您的依赖项会带来什么?我认为您应该在
applicationContext.xml
中包含数据源def,然后hibernate应该会很高兴

所以。。。


类路径:hibernate-cfg.xml
org.hibernate.cfg.AnnotationConfiguration
${jdbc.dial}
真的
真的
0
进入
applicationContext.xml
并从
springservlet.xml

然后嵌入在会话工厂中的hibernate-cfg.xml应该可以找到它的数据源,并乐于加载

最好将servlet映射和mvc定义与后端内容(bean factory等)隔离开来,因为如果需要的话,将来更容易对其进行更改


你用什么来构建你的应用程序?

你的依赖性带来了什么?我认为您应该在
applicationContext.xml
中包含数据源def,然后hibernate应该会很高兴

所以。。。


类路径:hibernate-cfg.xml
org.hibernate.cfg.AnnotationConfiguration
${jdbc.dial}
真的
真的
0
进入
applicationContext.xml
并从
springservlet.xml

然后嵌入在会话工厂中的hibernate-cfg.xml应该可以找到它的数据源,并乐于加载

最好将servlet映射和mvc定义与后端内容(bean factory等)隔离开来,因为如果需要的话,将来更容易对其进行更改



使用什么构建应用程序?

显示Spring应用程序上下文文件。从外观上看,您正在DispatcherServlet上下文配置文件中定义一个数据源。以及根应用程序上下文文件中的entityManagerFactory。根应用程序上下文中的bean不能引用servlet应用程序上下文文件中的bean。您需要将数据源bean移动到另一个xml配置文件。如果您有一个
web.xml
,请发布它……是的。我愿意。我要展示吗it@JnG您可以显示您的hibernate-context.xml文件吗?您应该在
applicationContext
中定义bean和commons内容,并在
spring servlet.xml
中定义特定于servlet的内容来显示您的spring应用程序上下文文件。从外观上看,您正在DispatcherServlet上下文配置文件中定义一个数据源。以及根应用程序上下文文件中的entityManagerFactory。根应用程序上下文中的bean不能引用servlet应用程序上下文文件中的bean。您需要将数据源bean移动到另一个xml配置文件。如果您有一个
web.xml
,请发布它……是的。我愿意。我要展示吗it@JnG您可以显示您的hibernate-context.xml文件吗?您应该在
applicationContext
中定义bean和commons内容,并在
spring servlet.xml
中定义特定于servlet的内容,那么META-NF/spring/hibernate-context.xml呢。正如我所说,在该文件中定义数据源,而不是spring-servlet.xml。我的WEB-INF文件夹中只有spring-servlet.xml文件和applicationContext.xml。META-NF/spring/hibernate-context.xml如何。正如我所说,在该文件中定义数据源,而不是spring-servlet.xml。我的WEB-INF文件夹中只有spring-servlet.xml文件和applicationContext.xml。如果您有意见,请发表意见。这不是一个答案,我不认为给出完整的代码来回答这个问题会对op有帮助,但这是可以做到的。如果您认为soI找不到这个类路径,请发布代码片段:hibernate-cfg.xml org.hibernate.cfg.AnnotationC