applicationContext.xml配置如下:
[code="java"]<?xml version="1.0" encoding="UTF-8"?>
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"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="simpleJdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
<constructor-arg><ref bean="dataSource"/></constructor-arg>
</bean>
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@192.168.1.111:1521:ORA11
scott
tiger
[/code]
测试代码为:
[code="java"]package com.mycom.dwr;
import java.sql.PreparedStatement;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public void test(){
String [] conf = new String[1];
conf[0]="applicationContext.xml";
ApplicationContext appContext = new ClassPathXmlApplicationContext(conf);
TestDwr us = (TestDwr)appContext.getBean("testDwr");
us.getval();
}
}[/code]
[code="java"]package com.mycom.dwr;
import java.sql.Connection;
import java.sql.PreparedStatement;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.mycom.dao.BaseDao;
//@Component("BaseDao")
@Transactional
public class TestDwr implements BaseDao {
@Resource(name="simpleJdbcTemplate")
private SimpleJdbcTemplate simpleJdbcTemplate;
@Resource(name="dataSource")
private DataSource ds ;
@Resource(name="dataSource")
public void setDataSource(DataSource ds){
this.ds=ds;
}
@Transactional
public String getval(){
try {
String sql1 = "insert into dept(deptno,dname,loc) values (13,'eagle11','bj11')";
String sql2 = "inser into dept(deptno,dname,loc) values (15,'eagle2','bj22')";
simpleJdbcTemplate.update(sql1);
simpleJdbcTemplate.update(sql2);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
}[/code]
BaseDao.java:
[code="java"]package com.mycom.dao;
import javax.sql.DataSource;
public interface BaseDao {
public String getval();
}[/code]
执行测试程序Test。发现事务没有被控制
[b]问题补充:[/b]
谢谢,我增加
tx:annotation-driven/后
测试时代码执行到
TestDwr us = (TestDwr)appContext.getBean("BaseDao");
就不继续了。点解
[b]问题补充:[/b]
我测试时 //@Component("BaseDao") 是没注释的。 - -
如果启动事务控制tx:annotation-driven/ 执行到getbean那就不执行了。如果没有这句,代码可以执行,但没事务控制 - -