1.下载spring源码
2.将spring源码在idea跑起来
3.新建一个测试工程,写如下测试代码,方便断点看源码
@Component
public class TransTest {
@Autowired
private JdbcTemplate jdbcTemplate;
@Transactional
public void test(){
System.out.println(1);
jdbcTemplate.execute("insert test(id,type) values(2,1)");
}
}
package com.hujun.config;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
@Configuration
@EnableTransactionManagement
public class HiKariDataConfig {
@Bean
public HikariDataSource hikariDataSource(){
HikariConfig hikariConfig=new HikariConfig();
hikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&pinGlobalTxToPhysicalConnection=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=CONVERT_TO_NULL");
hikariConfig.setUsername("root");
hikariConfig.setPassword("root");
hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
HikariDataSource hikariDataSource=new HikariDataSource(hikariConfig);
return hikariDataSource;
}
@Bean
public DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource){
return new DataSourceTransactionManager(dataSource);
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource){
return new JdbcTemplate(dataSource);
}
}
package com.hujun.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
public class TransTest {
@Autowired
private JdbcTemplate jdbcTemplate;
@Transactional
public void test(){
System.out.println(1);
jdbcTemplate.execute("insert activity(id,type) values(2,1)");
}
}
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
compile group: 'junit', name: 'junit', version: '4.12'
compile group: 'com.zaxxer', name: 'HikariCP-java7', version: '2.4.13'
compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.21'
compile(project(":spring-tx"))
compile(project(":spring-jdbc"))
compile(project(":spring-beans"))
compile(project(":spring-core"))
compile(project(":spring-aop"))
compile(project(":spring-context"))
}