Springの古い宣言型TX手法を実装しています
これが私のターゲットDAOオブジェクトです:
必要な輸入品..
public class UserDAOImpl extends JdbcDaoSupport {
public void add(int id, String name, Float salary){
System.out.println("add");
String SQL = "insert into User_Details (id, name, salary) values (?, ?, ?)";
getJdbcTemplate().update(SQL, id, name, salary);
getJdbcTemplate().update(SQL, id, name, salary);
getJdbcTemplate().update(SQL, id, name, salary);
throw new java.lang.RuntimeException("Exception occurs :)");
}
}
applicationContext.xml:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="add">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="userDetailProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="userDetailDAOImpl" />
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
<bean id="userDetailDAOImpl" class="com.gagan.dao.UserDAOImpl">
<property name="dataSource" ref="dataSource" />
メインクラス:
輸入..
public class SpringTxTestCase {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDAOImpl ud=(UserDAOImpl)context.getBean("userDetailProxy");
ud.add(101,"Rahul", 1233.6f);
}
}
アプリケーションを実行すると、次のエラーが発生しました。
スレッド"main"java.lang.ClassCastExceptionの例外:$ Proxy0をSpringTxTestCase.main(SpringTxTestCase.java:14)のcom.gagan.dao.UserDAOImplにキャストできません
applicationContext.xmlのcom.gagan.dao.UserDAOImplを指すorg.springframework.aop.framework.ProxyFactoryBeanを適切に構成しましたが、ClassCastExceptionエラーが発生した理由がわかりません。
よろしくお願いします、Gagan