2017-03-17 9 views
1

我正在嘗試創建自己的eshop。首先,我有問題與數據庫連接。 我有以下文件:豆或xml文件的問題

Class HomeController.java (with the @Autowired) package controllers 
Interface ProductDao.java package dao 
Class ProductDaoImpl implements ProductDao (with @Repository, @Transactional and a @Autowired SessionFactory) package dao.impl 
Class Product (with the @Entity) package model. 

我還有jdbc.properties使用用戶名,密碼,驅動程序,URL信息的屬性文件夾中。 我認爲所有這些文件都是正確的。

所以problably我都會有問題,以下文件

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

     <modelVersion>4.0.0</modelVersion> 
     <groupId>com.mywebsite</groupId> 
     <artifactId>emusicstore</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <packaging>war</packaging> 
     <dependencies> 

      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-webmvc</artifactId> 
       <version>4.1.4.RELEASE</version> 
      </dependency> 


      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-core</artifactId> 
       <version>4.1.1.RELEASE</version> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-orm</artifactId> 
       <version>4.1.4.RELEASE</version> 
      </dependency> 
      <dependency> 
       <groupId>org.hibernate</groupId> 
       <artifactId>hibernate-core</artifactId> 
       <version>4.0.1.Final</version> 
      </dependency> 
      <dependency> 
       <groupId>org.hibernate.javax.persistence</groupId> 
       <artifactId>hibernate-jpa-2.0-api</artifactId> 
       <version>1.0.1.Final</version> 
      </dependency> 
      <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> 
      <dependency> 
       <groupId>mysql</groupId> 
       <artifactId>mysql-connector-java</artifactId> 
       <version>6.0.5</version> 
      </dependency> 



      <dependency> 
       <groupId>jstl</groupId> 
       <artifactId>jstl</artifactId> 
       <version>1.2</version> 
      </dependency> 

      <dependency> 
       <groupId>taglibs</groupId> 
       <artifactId>standard</artifactId> 
       <version>1.1.2</version> 
      </dependency> 

     </dependencies> 

     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.5.1</version> 
        <configuration> 
         <source>1.8</source> 
         <target>1.8</target> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </project> 

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> 


       <listener> 
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
       </listener> 
       <context-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value> 
        WEB-INF/dispatcher-servlet.xml, 
        WEB-INF/applicationContext.xml  
       </param-value> 
       </context-param> 
       <!-- end of adding listener --> 
       <servlet> 
        <servlet-name>dispatcher</servlet-name> 
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
        <load-on-startup>1</load-on-startup> 
       </servlet> 
       <servlet-mapping> 
        <servlet-name>dispatcher</servlet-name> 
        <url-pattern>/</url-pattern> 
       </servlet-mapping> 

       <!-- add listener --> 

       <description>eShop Database</description> 
       <resource-ref> 
        <description>DB Connection</description> 
        <res-ref-name>jdbc/myeshop</res-ref-name> 
        <res-type>javax.sql.DataSource</res-type> 
        <res-auth>Container</res-auth> 
       </resource-ref> 
      </web-app> 

調度-servlet.xml中

 <?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:context="http://www.springframework.org/schema/context" 
      xmlns:mvc="http://www.springframework.org/schema/mvc" 
      xmlns:tx="http://www.springframework.org/schema/tx" 
      xsi:schemaLocation="http://www.springframework.org/schema/mvc 
      http://www.springframework.org/schema/mvc/spring-mvc.xsd 
       http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans.xsd 
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context.xsd 
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-4.1.xsd"> 

      <context:component-scan base-package="controllers" /> 

      <mvc:annotation-driven /> 

      <bean id="viewResolver" 
       class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
       <property name="prefix" value="/WEB-INF/views/" /> 
       <property name="suffix" value=".jsp" /> 
      </bean> 

      <mvc:resources mapping="/resources/**" location="/WEB-INF/resources/" /> 

      <tx:annotation-driven /> 
     </beans> 

的applicationContext.xml

  <?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:tx="http://www.springframework.org/schema/tx" 
       xmlns:context="http://www.springframework.org/schema/context" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd 
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd"> 

       <beans profile="dev"> 
        <context:property-placeholder location="properties/jdbc.properties" /> 
        <bean id="dataSource" 
         class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
         <property name="driverClassName" value="${jdbc.driver}"></property> 
         <property name="url" value="${jdbc.url}"></property> 
         <property name="password" value="${jdbc.password}"></property> 
         <property name="username" value="${jdbc.username}"></property> 
        </bean> 

        <bean id="sessionFactory" 
         class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
         <property name="dataSource" ref="dataSource"></property> 
         <property name="hibernateProperties"> 
          <props> 
           <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> 
           <prop key="hibernate.hbm2ddl.auto">update</prop> 
           <prop key="hibernate.show_sql">true</prop> 
           <prop key="hibernate.format_sql">true</prop> 

          </props> 
         </property> 
         <property name="packagesToScan"> 
          <list> 
           <value>dao.**.*</value> 
          </list> 
         </property> 
        </bean> 

        <bean id="transactionManager" 
         class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
         <property name="sessionFactory" ref="sessionFactory"></property> 
        </bean> 

        <!-- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
         <property name="dataSource" ref="dataSource"></property> 
        </bean> --> 

        <tx:annotation-driven /> 
       </beans> 

      </beans> 

昨天我問了同樣的問題。我試圖調試給出的答案,但沒有。 我的問題是: 1)在調度員servlet: 我可以讓它base-package =「controllers,dao」?或者我的代碼是正確的?

2)正如你可以在applicationContext中看到的,我有兩種bean的id =「transactionManager」。第二個是評論。我必須使用哪一個,爲什麼?

3)我正在運行我的項目,錯誤與昨天一樣org.springframework.beans.factory.BeanCreationException

4)所有的類都在Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException:

我真的道歉要求在2天內同樣的事情,但我想用數據庫從本週開始連接,我不能。任何建議都會對我有所幫助。

謝謝大家,邁克

回答

0
  1. 您可以優化你的包名com.demo.controllercom.demo.daocom.demo.service。然後在dispatcher-servlet.xml中替換它:<context:component-scan base-package="com.demo" />

  2. HibernateTransactionManager用於休眠,DataSourceTransactionManager用於普通JDBC。

  3. 我不知道什麼是你的代碼錯誤,但我注意到,你的話是錯誤的,正確的是org.hibernate.dialect.MySQLDialect
+0

同樣的問題...任何其他想法? –

0

嘗試添加這方面和測試

<bean id="productDao" class="dao.impl.ProductDaoImpl"> 
+0

你的意思是在哪裏添加這個上下文? –