ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

05、spring Aop 事务注解入门配置

2021-05-25 19:32:36  阅读:107  来源: 互联网

标签:account jdbc 05 spring org springframework Aop import public


项目目录结构:

 

 

 

1、导入依赖

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.7</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.7</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.7</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>

2、创建实体类(数据库表以类的属性一致)

public class Account implements Serializable {

private Integer id;
private String name;
private double money;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public double getMoney() {
return money;
}

public void setMoney(double money) {
this.money = money;
}

@Override
public String toString() {
return "Account{" +
"id=" + id +
", name='" + name + '\'' +
", money=" + money +
'}';
}
}

3、创建JdbcBase类
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;

public class BaseDao {

@Autowired
private JdbcTemplate jdbcTemplate;

public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
}

4、创建DAO
接口:
import com.boat.entity.Account;

import java.util.List;

public interface AccountDao{

int save(Account account);

List<Account> listAccount();

}

实现类:
import com.boat.dao.AccountDao;
import com.boat.dao.base.BaseDao;
import com.boat.entity.Account;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class AccountDaoImpl extends BaseDao implements AccountDao {
@Override
public int save(Account account) {
Integer flag = getJdbcTemplate().update("insert into account(name,money) values(?,?)",account.getName(),account.getMoney());
return flag;
}

@Override
public List<Account> listAccount() {
return getJdbcTemplate().query("select * from account",new BeanPropertyRowMapper<>(Account.class));
}
}

5、创建service服务
接口:
import com.boat.entity.Account;

import java.util.List;

public interface AccountService {

public abstract int save(Account account);

public abstract List<Account> listAccount();
}

实现类:
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class AccountServiceImpl implements AccountService {

@Autowired
private AccountDao accountDao;

public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
public int save(Account account) {
int falg = accountDao.save(account);
int i = 1 / 0;
return falg;
}

@Override
public List<Account> listAccount() {
return accountDao.listAccount();
}

}

6、配置config配置类
主配置类:
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@ComponentScan("com.boat")
@PropertySource("jdbcconfig.properties")
@Import(value = {JdbcConfiguration.class,TransactionConfigration.class})
@EnableTransactionManagement
public class SupConfiguration {

}

数据源配置类:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import javax.sql.DataSource;

public class JdbcConfiguration {

@Value("${jdbc.driveclass}")
private String driveclass;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;

@Bean("jdbcTemplate")
public JdbcTemplate createJdbcTemplate(DataSource dataSource){
return new JdbcTemplate(dataSource);
}

@Bean("datasource")
public DataSource createDatasource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driveclass);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}

}

配置事务管理器:
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

public class TransactionConfigration {

@Bean("transactionManager")
public DataSourceTransactionManager createDataSourceTransactionManager(DataSource dataSource){
return new DataSourceTransactionManager(dataSource);
}

}

7、配置jdbcconfig.properties文件,配置连接数据库的参数
jdbc.driveclass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
jdbc.username=xxx
jdbc.password=xxx

8、测试事务
import com.boat.config.SupConfiguration;
import com.boat.entity.Account;
import com.boat.service.AccountService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SupConfiguration.class)
public class TestSpring {

@Autowired
private AccountService accountService;

@Test
public void save(){
Account account = new Account();
account.setName("高某");
account.setMoney(1000);
accountService.save(account);
}

@Test
public void list(){
System.out.println(accountService.listAccount());
}

}
运行结果,并检查数据是否回滚,如果数据库没有插入数据,表示配置成功。

 

 

 

 




标签:account,jdbc,05,spring,org,springframework,Aop,import,public
来源: https://www.cnblogs.com/M87-A/p/14810173.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有