Skip to content

Commit 374e0b7

Browse files
author
longtanfei
committed
升级spring-boot 2.0.1
1 parent e018f84 commit 374e0b7

File tree

4 files changed

+62
-12
lines changed

4 files changed

+62
-12
lines changed

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
buildscript {
22
ext {
3-
springBootVersion = '2.0.0.RELEASE'
3+
springBootVersion = '2.0.1.RELEASE'
44
}
55
repositories {
66
maven {url 'http://maven.aliyun.com/nexus/content/groups/public/'}

src/main/java/com/vincent/config/DataSourceAopAspect.java

+58-3
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,73 @@
77
import org.springframework.stereotype.Component;
88

99
/**
10-
* 通过 aop 切换datasource
10+
*
11+
* <a href = "https://my.oschina.net/guangshan/blog/1808373">在Spring中使用MyBatis的Mapper接口自动生成时,用一个自定义的注解标记在Mapper接口的方法中,<br/>
12+
* 再利用@Aspect定义一个切面,拦截这个mapper中的增删改查注解实现数据源切换。<br/>
13+
* 在Spring Boot 1.X(Spring Framework 4.x)中,并不能生效,<br/>
14+
* 而在Spring Boot 2.X(Spring Framework 5.X)中却能生效。</a><br/>
15+
*
16+
* 通过 aop 切换 datasource
1117
*/
1218
@Aspect
1319
@Component
1420
public class DataSourceAopAspect implements PriorityOrdered {
1521

16-
@Before(value = "execution(* com.vincent.dao.UserDao.get*(..))")
22+
/**
23+
* {@link org.apache.ibatis.annotations.Select} 切入点
24+
*/
25+
private static final String SELECT_POINTCUT = "@annotation(org.apache.ibatis.annotations.Select)";
26+
27+
/**
28+
* {@link org.apache.ibatis.annotations.SelectProvider} 切入点
29+
*/
30+
private static final String SELECTPROVIDER_POINTCUT = "@annotation(org.apache.ibatis.annotations.SelectProvider)";
31+
32+
/**
33+
* {@link org.apache.ibatis.annotations.Insert} 切入点
34+
*/
35+
private static final String INSERT_POINTCUT = "@annotation(org.apache.ibatis.annotations.Insert)";
36+
37+
/**
38+
* {@link org.apache.ibatis.annotations.InsertProvider} 切入点
39+
*/
40+
private static final String INSERTPROVIDER_POINTCUT = "@annotation(org.apache.ibatis.annotations.InsertProvider)";
41+
42+
/**
43+
* {@link org.apache.ibatis.annotations.Update} 切入点
44+
*/
45+
private static final String UPDATE_POINTCUT = "@annotation(org.apache.ibatis.annotations.Update)";
46+
47+
/**
48+
* {@link org.apache.ibatis.annotations.UpdateProvider} 切入点
49+
*/
50+
private static final String UPDATEPROVIDER_POINTCUT = "@annotation(org.apache.ibatis.annotations.UpdateProvider)";
51+
52+
/**
53+
* {@link org.apache.ibatis.annotations.Delete} 切入点
54+
*/
55+
private static final String DELETE_POINTCUT = "@annotation(org.apache.ibatis.annotations.Delete)";
56+
57+
/**
58+
* {@link org.apache.ibatis.annotations.DeleteProvider} 切入点
59+
*/
60+
private static final String DeletePROVIDER_POINTCUT = "@annotation(org.apache.ibatis.annotations.DeleteProvider)";
61+
62+
/**
63+
* 切换到读库
64+
* @param point
65+
*/
66+
@Before(value = SELECT_POINTCUT + " || " + SELECTPROVIDER_POINTCUT)
1767
public void setReadDataSource(JoinPoint point) {
1868
DataSourceContextHolder.setRead();
1969
}
2070

21-
@Before(value = "execution(* com.vincent.dao.UserDao.add*(..))")
71+
/**
72+
* 切换到写库
73+
* @param point
74+
*/
75+
@Before(value = INSERT_POINTCUT + " || " + INSERTPROVIDER_POINTCUT + " || " + UPDATE_POINTCUT + " || " + UPDATEPROVIDER_POINTCUT
76+
+ " || " + DELETE_POINTCUT + " || " + DeletePROVIDER_POINTCUT)
2277
public void setWriteDataSource(JoinPoint point) {
2378
DataSourceContextHolder.setWrite();
2479
}

src/main/java/com/vincent/config/DataSourceConfiguration.java

-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
package com.vincent.config;
22

33
import com.alibaba.druid.pool.DruidDataSource;
4-
import com.vincent.plugin.MyPlugin;
5-
import java.util.HashMap;
6-
import java.util.Map;
74
import javax.sql.DataSource;
8-
import org.apache.ibatis.plugin.Interceptor;
95
import org.apache.ibatis.session.SqlSessionFactory;
106
import org.mybatis.spring.SqlSessionFactoryBean;
11-
import org.springframework.beans.factory.annotation.Autowired;
127
import org.springframework.beans.factory.annotation.Qualifier;
138
import org.springframework.boot.context.properties.ConfigurationProperties;
149
import org.springframework.boot.jdbc.DataSourceBuilder;

src/test/java/com/vincent/dao/UserDaoTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ public class UserDaoTest {
1919
@Transactional
2020
public void add() {
2121
TUser user = new TUser();
22-
user.setUserName("vicent.long");
22+
user.setUserName("vicent.fly");
2323
user.setPassword("123456");
2424
user.setPhone("130202020");
2525
dao.add(user);
2626
}
2727

2828
@Test
2929
public void getById() {
30-
TUser user1 = dao.getById(1);
31-
System.out.println("user" + user1);
30+
TUser user1 = dao.getById(100);
31+
System.out.println("user" + user1);
3232
}
3333
}

0 commit comments

Comments
 (0)