我正在实施 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 :)");
}
}
应用程序上下文.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);
}
}
当我执行我的应用程序时,我收到了这个错误:
线程“主”java.lang.ClassCastException 中的异常:$Proxy0 无法在 SpringTxTestCase.main 中转换为 com.gagan.dao.UserDAOImpl(SpringTxTestCase.java:14)
我已经在 applicationContext.xml 中正确配置了指向我的 com.gagan.dao.UserDAOImpl 的 org.springframework.aop.framework.ProxyFactoryBean 但我很困惑为什么会出现 ClassCastException 错误。
提前致谢, 加根