Spring 3 Annotations:xml-less声明式事务管理

时间:2013-07-05 06:40:08

标签: java spring annotations

我正在按照教程here

创建纯粹的注释驱动(xml-less)spring 3应用程序

这是我的配置文件

@Bean(name = "dataSource")
public DriverManagerDataSource dataSource() {
    DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
    driverManagerDataSource.setDriverClassName("org.postgresql.Driver");
    driverManagerDataSource.setUrl("jdbc:postgresql://localhost:5432/test");
    driverManagerDataSource.setUsername("postgres");
    driverManagerDataSource.setPassword("gayle");
    return driverManagerDataSource;
}

@Bean(name = "studentJDBCTemplate")
public StudentJDBCTemplate studentJDBCTemplate() {
    StudentJDBCTemplate studentJDBCTemplate = new StudentJDBCTemplate();
    studentJDBCTemplate.setDataSource(dataSource());
    studentJDBCTemplate.setDataSourceTransactionManager(dataSourceTransactionManager());
    studentJDBCTemplate.setJdbcTemplate(new JdbcTemplate());
    return studentJDBCTemplate;
}

@Bean
public DataSourceTransactionManager dataSourceTransactionManager() {
    DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
    dataSourceTransactionManager.setDataSource(dataSource());
    return dataSourceTransactionManager;
}

现在我正在尝试declarative transaction management,因此create()内的StudentJDBCTemplate方法

public void create(String name, Integer age) {
    System.out.println("Creating!");
    String SQL = "insert into Student (name, age) values (?, ?)";
    jdbcTemplate.update(SQL, name, age);
    System.out.println("Created Record Name=" + name + " Age=" + age);
}

没有以编程方式调用事务管理器。

我如何实现这一目标?我是否必须声明@Aspect才能执行此操作?是否有任何注释可以自动配置何时提交事务?

1 个答案:

答案 0 :(得分:2)

您想使用@Transactional注释。 Here's the documentation for it.具体来说,请参阅第10.5.1节。您需要做的就是使用注释注释要包含事务的方法。使用注释的值,您可以指定有关事务类型的任何内容。