2012-05-13 4 views
2

사용 주석spring3 - 주석 - JdbcDaoSupport

@Repository("testDao") 
public class TestDaoImpl extends JdbcDaoSupport implements BaseDao{ 

@Override 
public Object addObject(String sqlid, Object obj) { 
    // TODO Auto-generated method stub 
    return null; 
} 

에 의해 발생 : java.lang.IllegalArgumentException가 :

필요합니다 '는 dataSource'또는 'JdbcTemplate을'나는 사용하지 않습니다

<bean id="termsDao" class="com.manage.base.dao.impl.TestDaoImpl"> 
    <property name="jdbcTemplate" ref="jdbcTemplate"/> 
</bean> 

이 XML 코드로 설정하고, "JdbcTemplate을는"다른 "스프링 XML"에 정의되었다.

주석으로이 문제를 해결하는 방법 : " 'dataSource'또는 'jdbcTemplate'이 필요합니다.

+2

해결 여기 : HTTP : //forum.springsource .org/showthread.php? 111432 - 왜 - setDatSource() - 메서드 - 인 - JdbcDaoSupport - 최종 –

답변

4

다음 방법 중 하나를 사용할 수 있습니다. 첫 번째 방법은 공개 인터페이스에서 SpringFramework 클래스를 노출시키지 않기 때문에 dataSource를 사용하는 것이 좋습니다. 둘 다 작동합니다.

@Repository("testDao") 
public class TestDaoImpl extends JdbcDaoSupport implements BaseDao{ 

    @Autowired 
    TestDaoImpl(DataSource dataSource) { 
    setDataSource(dataSource); 
    } 
} 

또는

@Repository("testDao") 
public class TestDaoImpl extends JdbcDaoSupport implements BaseDao{ 

    @Autowired 
    TestDaoImpl(JDBCTemplate template) { 
    setJdbcTemplate(template); 
    } 
} 
+0

첫 번째 방법을 사용하는 경우 DataSource는 applicationContext.xml에 정의 된 dataSource를 참조합니다. 속성 이름 = "드라이버 클래스 이름"값 = "$ {jdbc.driverClassName} = "$ {jdbc.username}"// devdar

+0

예. 우리는 생성자 arg를 통해 dataSource를 주입하고있다. – gkamal

+0

첫 번째 옵션을 사용했지만 java.lang.IllegalArgumentException가 발생했습니다 : 'dataSource'또는 'jdbcTemplate'이 필요합니까? – devdar

0

나는 심지어 DAO에 생성자로 데이터 소스를 주입 느낌은 불필요한 코딩 단계입니다. JDBC 설정 XML에서 datasource를 JDBC 템플릿에 삽입하고 모든 DAO에서 jdbctTemplate 객체를 가져 오지 않는 이유는 무엇입니까?

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 
and let your DAO extend JDBCSupport class. 

public class PersonDao extends JdbcDaoSupport{ 
public List<Person> selectAll(){ 
    String selectAllSql = "SELECT * FROM PERSON;"; 

    return getJdbcTemplate().query(selectAllSql, new PersonRowMapper()); 

........ }

}

전체 예 : http://www.studytrails.com/frameworks/spring/spring-jdbc-dao-support.jsp

+0

JdbcDaoSupport는 jdbctemplate 속성이 삽입되어야합니다. 여기서 런타임 예외가 발생합니다. – fuzzy28

관련 문제