2014-04-27 70 views
1

提出關於spring和tomcat的問題。我有以下代碼java.lang.IllegalArgumentException:在啓動tomcat時需要'dataSource'或'jdbcTemplate'

BookDAOImpl.java

@Repository 
public class BookDAOImpl extends NamedParameterJdbcDaoSupport implements BookDAO { 

    private class BookMapper implements RowMapper<Book> { 

     @Override 
     public Book mapRow(ResultSet resultSet, int rowNum) throws SQLException { 
      Book book = new Book(); 
      book.setId(resultSet.getInt("id")); 
      book.setTitle(resultSet.getString("title")); 
      book.setAuthor(resultSet.getString("author")); 
      book.setPublisher(resultSet.getString("publisher")); 
      book.setPublicationDate(resultSet.getDate("publication_date")); 
      book.setIsbn(resultSet.getString("isbn")); 
      book.setAvailable(resultSet.getBoolean("available")); 
      return book; 
     } 

    } 
} 

LibraryDataSource.java

@Component("dataSource") 
public class LibraryDataSource extends DriverManagerDataSource { 

    @Autowired 
    public LibraryDataSource(@Value("${url}")String url, @Value("${user}")String username, @Value("${password}")String password) { 
     super(url, username, password); 
    } 
} 

應用程序的context.xml

<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:tx="http://www.springframework.org/schema/tx" 
    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.0.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-4.0.xsd" 
    default-autowire="byName"> 

    <context:annotation-config/> 
    <context:component-scan base-package="com.LibraryManagement.*" /> 
    <context:property-placeholder location="classpath:prop.properties"/> 
</beans> 

現在據我所知應該自動裝配拿起dataSource並將其自動裝入到Repository中,但是當我啓動Tomcat時,我得到了以下呃ror

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bookDAOImpl' defined in file [P:\SourceControl\EclipseWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\WebLibraryManagemenet\WEB-INF\classes\com\LibraryManagement\access\impl\BookDAOImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) 

任何想法是怎麼回事?

感謝

回答

6

下面的構造函數添加到BookDAOImpl:

@Autowired 
public BookDAOImpl(DataSource dataSource) { 
    super(); 
    setDataSource(dataSource); 
} 
+0

感謝名單了很多,工作就像魅力 – Ravikiran763

+0

@ Ravikiran763歡迎您! – geoand

相關問題