2016-02-02 77 views
0

我無法注入在Spring MVC我DAO類: 這是我的DAO類:無法注入春天BO DAO類

package com.pankaj.bookslibrary.dao; 

@Component 
public class BooksLibraryDAO 
{ 
    @PersistenceContext 
    private EntityManager em; 

    public void saveBook(Book book) 
    { 
     em.persist(book); 
    } 
} 

這是我的BO類調用DAO:

package com.pankaj.bookslibrary.controller; 

@Service 
public class BooksLibraryBO 
{ 
    @Autowired 
    private BooksLibraryDAO booksLibraryDAO; 

    public void saveBook(Book book) 
    { 
     booksLibraryDAO.saveBook(book); 
    } 

以上代碼行爲NullPointerException,因爲booksLibraryDAO爲null。 下面是我的DispatcherServlet配置文件中的相關行:

<beans xmlns=...3.0.xsd"> 

    <context:component-scan base-package="com.pankaj.bookslibrary" /> 
    <context:annotation-config/> 

    <bean id="dataSource"....</bean> 

    <bean id="entityManagerFactory" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" /> 
     <property name="persistenceUnitName" value="BooksLibrary_PersistenceUnit" /> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="jpaVendorAdapter"> 
      <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
       <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> 
       <property name="showSql" value="false" /> 
       <property name="generateDdl" value="true" /> 
      </bean> 
     </property> 
    </bean> 


    <bean id="transactionManagerNonJTA" class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <property name="entityManagerFactory" ref="entityManagerFactory" /> 
     <property name="defaultTimeout" value="1800"></property> 
    </bean> 
    <tx:annotation-driven transaction-manager="transactionManagerNonJTA" /> 

我不知道我錯過了。 這是我如何從控制器撥打電話:

BooksLibraryBO bo = new BooksLibraryBO(); 
bo.saveBook(book); 
+1

您正在創建一個新的實例,不要這樣做,在控制器中注入BO。 –

+0

感謝M. Deinum。這工作。 –

回答

1
  1. 的包中的類是從您掃描標註的包裝不同。將軟件包添加到base-packages的列表中以掃描!

  2. 正如M.Deinum解釋的那樣,您自己創建BooksLibraryBO,spring不知道那些實例,也不會處理註釋。