1.1 项目目录
1.2 持久层配置类
package cn.guardwhy.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
/**
* 持久层配置类
*/
public class DaoConfiguration {
/**
* 创建JdbcTemplate对象
*/
@Bean("jdbcTemplate")
public JdbcTemplate getJdbcTemplate(DataSource dataSource){
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);
return jdbcTemplate;
}
/**
* 创建数据源对象
*/
@Bean("dataSource")
public DataSource createDataSource(){
// 创建DataSource
DruidDataSource dataSource = new DruidDataSource();
// 注入属性
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring");
dataSource.setUsername("root");
dataSource.setPassword("root");
dataSource.setInitialSize(6);
dataSource.setMinIdle(3);
dataSource.setMaxActive(50);
dataSource.setMaxWait(60000);
dataSource.setTimeBetweenEvictionRunsMillis(60000);
return dataSource;
}
}
1.3 事务配置类
package cn.guardwhy.config;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
/**
* 事务配置类
*/
public class TransactionConfiguration {
@Bean("transactionManager")
public DataSourceTransactionManager getTransactionManager(DataSource dataSource){
// 创建事务管理器对象
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
// 设置数据源
transactionManager.setDataSource(dataSource);
return transactionManager;
}
}
1.4 主配置类
package cn.guardwhy.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* 主配置类步骤:
* 1.使用@Configuration注解,声明主配置类
* 2.使用@ComponentScan注解,扫描注解配置
* 3.使用@Import注解,导入其它模块配置类
* 4.使用@EnableTransactionManagement注解,启用spring对注解事务的配置
*/
@Configuration
@ComponentScan(value="cn.guardwhy")
@Import(value={
DaoConfiguration.class,TransactionConfiguration.class})
@EnableTransactionManagement
public class SpringConfiguration {
}
1.5 表现层
AccountController
package cn.guardwhy.controller;
import cn.guardwhy.config.SpringConfiguration;
import cn.guardwhy.service.AccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
* 账户表现层
*/
public class AccountController {
public static void main(String[] args) {
// 1.加载spring配置文件,创建spring ioc容器
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);
// 2.获取账户service
AccountService accountService = (AccountService)context.getBean("accountService");
// 3.转账操作
accountService.transfer("curry","james",200f);
}
}
1.6 执行结果