1
0
mirror of https://gitee.com/incloudcode/yexuejc-springboot.git synced 2025-07-04 02:54:22 +08:00

2.0.0 基于springboot 1.x 2.x 分开维护

This commit is contained in:
yexuejc 2018-09-26 16:57:15 +08:00
parent 7ff9bb214c
commit ff57ed324f
8 changed files with 368 additions and 436 deletions

View File

@ -1,5 +1,8 @@
# yexuejc-springboot-base # yexuejc-springboot
### 说明
>本分支基于 springboot 2.x 开发版本号也将保持2.x
>1.x分支继续基于 springboot 1.x开发
#### 项目介绍 #### 项目介绍
基于springboot maven 封装可继承基础工程 基于springboot maven 封装可继承基础工程
@ -9,7 +12,7 @@ parent版本封装<br/>
base:功能封装 base:功能封装
#### 最新版本 #### 最新版本
>yexuejc.springboot.version=1.1.0 <br> >yexuejc.springboot.version=2.0.0 <br>
>yexuejc.base.version=1.1.9 >yexuejc.base.version=1.1.9
pom.xml pom.xml

View File

@ -1,6 +1,19 @@
yexuejc-springboot 更新内容 yexuejc-springboot 更新内容
------------------- -------------------
#### version 2.0.0
**time2018-9-26 16:55:00** <br/>
**branch** 2.x <br/>
**关联工程:** <br/>
```
springboot-base:1.1.9
spring-boot-starter-parent:2.0.5.RELEASE
```
**update** <br/>
1. 升级依赖
2. 2.x分支将基于springboot 2.x 开发
#
#### version 1.1.0 #### version 1.1.0
**time2018-9-23 12:49:36** <br/> **time2018-9-23 12:49:36** <br/>
**branch** master <br/> **branch** master <br/>

45
pom.xml
View File

@ -5,7 +5,7 @@
<groupId>com.yexuejc.springboot</groupId> <groupId>com.yexuejc.springboot</groupId>
<artifactId>yexuejc-springboot-parent</artifactId> <artifactId>yexuejc-springboot-parent</artifactId>
<version>1.1.0</version> <version>2.0.0</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>${project.artifactId}</name> <name>${project.artifactId}</name>
@ -15,7 +15,7 @@
<!-- spring boot父级,包含了统一版本管理,统一插件管理等 --> <!-- spring boot父级,包含了统一版本管理,统一插件管理等 -->
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.15.RELEASE</version> <version>2.0.5.RELEASE</version>
<!-- <relativePath/> lookup parent from repository --> <!-- <relativePath/> lookup parent from repository -->
</parent> </parent>
@ -59,9 +59,9 @@
<dependencies> <dependencies>
<!--基础包--> <!--基础包-->
<!--<dependency>--> <!--<dependency>-->
<!--<groupId>com.github.yexuejc</groupId>--> <!--<groupId>com.github.yexuejc</groupId>-->
<!--<artifactId>yexuejc-base</artifactId>--> <!--<artifactId>yexuejc-base</artifactId>-->
<!--<version>${yexuejc.base.version}</version>--> <!--<version>${yexuejc.base.version}</version>-->
<!--</dependency>--> <!--</dependency>-->
<dependency> <dependency>
<groupId>com.yexuejc.base</groupId> <groupId>com.yexuejc.base</groupId>
@ -176,37 +176,6 @@
<classifier>jar-with-dependencies</classifier> <classifier>jar-with-dependencies</classifier>
</dependency> </dependency>
<!-- spring-boot-admin相关 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui-hystrix</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui-turbine</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui-activiti</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
@ -271,7 +240,9 @@
<goal>single</goal> <goal>single</goal>
</goals> </goals>
<configuration> <configuration>
<descriptor>${basedir}/assembly/assembly.xml</descriptor> <descriptors>
<descriptor>${basedir}/assembly/assembly.xml</descriptor>
</descriptors>
</configuration> </configuration>
</execution> </execution>
</executions> </executions>

View File

@ -9,7 +9,7 @@
<parent> <parent>
<groupId>com.yexuejc.springboot</groupId> <groupId>com.yexuejc.springboot</groupId>
<artifactId>yexuejc-springboot-parent</artifactId> <artifactId>yexuejc-springboot-parent</artifactId>
<version>1.1.0</version> <version>2.0.0</version>
<!-- 本地打包:使用相对关联路径 --> <!-- 本地打包:使用相对关联路径 -->
<!--<relativePath>../../yexuejc</relativePath>--> <!--<relativePath>../../yexuejc</relativePath>-->
</parent> </parent>
@ -70,8 +70,8 @@
</dependency> </dependency>
<!-- 使用Redis --> <!-- 使用Redis -->
<dependency> <dependency>
<groupId>org.springframework.data</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-data-redis</artifactId> <artifactId>spring-boot-starter-data-redis</artifactId>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -1,22 +1,19 @@
package com.yexuejc.springboot.base.autoconfigure; package com.yexuejc.springboot.base.autoconfigure;
import org.apache.commons.pool2.impl.GenericObjectPool; import org.apache.commons.pool2.impl.GenericObjectPool;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties.Cluster;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties.Sentinel;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisNode; import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisSentinelConfiguration; import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnection; import org.springframework.data.redis.connection.jedis.JedisConnection;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisOperations; import org.springframework.data.redis.core.RedisOperations;
@ -24,440 +21,326 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPoolConfig;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
/**
* 多个database配置
*
* @author maxf
* @PackageName com.yexuejc.springboot.base.autoconfigure
* @Description
* @date 2018/9/26 15:27
*/
@Configuration @Configuration
@ConditionalOnClass({ JedisConnection.class, RedisOperations.class, Jedis.class }) @ConditionalOnClass({JedisConnection.class, RedisOperations.class, Jedis.class})
@EnableConfigurationProperties(RedisProperties.class) @EnableConfigurationProperties(RedisProperties.class)
@Order(1) @Order(1)
public class MutiRedisAutoConfiguration { public class MutiRedisAutoConfiguration {
public static final String BEAN_REDIS_FACTORY0 = "redisConnectionFactory";
public static final String BEAN_REDIS_FACTORY0 = "redisConnectionFactory"; public static final String BEAN_REDIS_TEMPLATE0 = "redisTemplate";
public static final String BEAN_REDIS_TEMPLATE0 = "redisTemplate"; public static final String BEAN_REDIS_STRING_TEMPLATE0 = "stringRedisTemplate";
public static final String BEAN_REDIS_STRING_TEMPLATE0 = "stringRedisTemplate";
public static final String BEAN_REDIS_FACTORY1 = "redis-factory-1";
public static final String BEAN_REDIS_TEMPLATE1 = "redis-template-1";
public static final String BEAN_REDIS_STRING_TEMPLATE1 = "redis-string-template-1";
public static final String BEAN_REDIS_FACTORY2 = "redis-factory-2";
public static final String BEAN_REDIS_TEMPLATE2 = "redis-template-2";
public static final String BEAN_REDIS_STRING_TEMPLATE2 = "redis-string-template-2";
public static final String BEAN_REDIS_FACTORY3 = "redis-factory-3";
public static final String BEAN_REDIS_TEMPLATE3 = "redis-template-3";
public static final String BEAN_REDIS_STRING_TEMPLATE3 = "redis-string-template-3";
public static final String BEAN_REDIS_FACTORY4 = "redis-factory-4";
public static final String BEAN_REDIS_TEMPLATE4 = "redis-template-4";
public static final String BEAN_REDIS_STRING_TEMPLATE4 = "redis-string-template-4";
public static final String BEAN_REDIS_FACTORY5 = "redis-factory-5";
public static final String BEAN_REDIS_TEMPLATE5 = "redis-template-5";
public static final String BEAN_REDIS_STRING_TEMPLATE5 = "redis-string-template-5";
public static final String BEAN_REDIS_FACTORY6 = "redis-factory-6";
public static final String BEAN_REDIS_TEMPLATE6 = "redis-template-6";
public static final String BEAN_REDIS_STRING_TEMPLATE6 = "redis-string-template-6";
public static final String BEAN_REDIS_FACTORY7 = "redis-factory-7";
public static final String BEAN_REDIS_TEMPLATE7 = "redis-template-7";
public static final String BEAN_REDIS_STRING_TEMPLATE7 = "redis-string-template-7";
public static final String BEAN_REDIS_FACTORY8 = "redis-factory-8";
public static final String BEAN_REDIS_TEMPLATE8 = "redis-template-8";
public static final String BEAN_REDIS_STRING_TEMPLATE8 = "redis-string-template-8";
public static final String BEAN_REDIS_FACTORY9 = "redis-factory-9";
public static final String BEAN_REDIS_TEMPLATE9 = "redis-template-9";
public static final String BEAN_REDIS_STRING_TEMPLATE9 = "redis-string-template-9";
/** public static final String BEAN_REDIS_FACTORY1 = "redis-factory-1";
* Redis connection configuration. public static final String BEAN_REDIS_TEMPLATE1 = "redis-template-1";
*/ public static final String BEAN_REDIS_STRING_TEMPLATE1 = "redis-string-template-1";
@Configuration public static final String BEAN_REDIS_FACTORY2 = "redis-factory-2";
@ConditionalOnClass(GenericObjectPool.class) public static final String BEAN_REDIS_TEMPLATE2 = "redis-template-2";
protected static class RedisConnectionConfiguration { public static final String BEAN_REDIS_STRING_TEMPLATE2 = "redis-string-template-2";
public static final String BEAN_REDIS_FACTORY3 = "redis-factory-3";
public static final String BEAN_REDIS_TEMPLATE3 = "redis-template-3";
public static final String BEAN_REDIS_STRING_TEMPLATE3 = "redis-string-template-3";
public static final String BEAN_REDIS_FACTORY4 = "redis-factory-4";
public static final String BEAN_REDIS_TEMPLATE4 = "redis-template-4";
public static final String BEAN_REDIS_STRING_TEMPLATE4 = "redis-string-template-4";
public static final String BEAN_REDIS_FACTORY5 = "redis-factory-5";
public static final String BEAN_REDIS_TEMPLATE5 = "redis-template-5";
public static final String BEAN_REDIS_STRING_TEMPLATE5 = "redis-string-template-5";
public static final String BEAN_REDIS_FACTORY6 = "redis-factory-6";
public static final String BEAN_REDIS_TEMPLATE6 = "redis-template-6";
public static final String BEAN_REDIS_STRING_TEMPLATE6 = "redis-string-template-6";
public static final String BEAN_REDIS_FACTORY7 = "redis-factory-7";
public static final String BEAN_REDIS_TEMPLATE7 = "redis-template-7";
public static final String BEAN_REDIS_STRING_TEMPLATE7 = "redis-string-template-7";
public static final String BEAN_REDIS_FACTORY8 = "redis-factory-8";
public static final String BEAN_REDIS_TEMPLATE8 = "redis-template-8";
public static final String BEAN_REDIS_STRING_TEMPLATE8 = "redis-string-template-8";
public static final String BEAN_REDIS_FACTORY9 = "redis-factory-9";
public static final String BEAN_REDIS_TEMPLATE9 = "redis-template-9";
public static final String BEAN_REDIS_STRING_TEMPLATE9 = "redis-string-template-9";
private final RedisProperties properties; @Configuration
@ConditionalOnClass(GenericObjectPool.class)
protected static class RedisConnectionConfiguration {
private final RedisSentinelConfiguration sentinelConfiguration; private final RedisProperties properties;
private final RedisClusterConfiguration clusterConfiguration; public RedisConnectionConfiguration(RedisProperties properties) {
this.properties = properties;
}
public RedisConnectionConfiguration(RedisProperties properties, @Primary
ObjectProvider<RedisSentinelConfiguration> sentinelConfiguration, @Bean(BEAN_REDIS_FACTORY0)
ObjectProvider<RedisClusterConfiguration> clusterConfiguration) { @ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
this.properties = properties; public JedisConnectionFactory redisConnectionFactory0() throws UnknownHostException {
this.sentinelConfiguration = sentinelConfiguration.getIfAvailable(); return createJedisConnectionFactory(0);
this.clusterConfiguration = clusterConfiguration.getIfAvailable(); }
}
@Primary @Bean(BEAN_REDIS_FACTORY1)
@Bean(BEAN_REDIS_FACTORY0) @ConditionalOnProperty(name = "yexuejc.redis.db1")
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true) public JedisConnectionFactory redisConnectionFactory1() throws UnknownHostException {
public JedisConnectionFactory redisConnectionFactory0() throws UnknownHostException { return createJedisConnectionFactory(1);
return applyProperties(createJedisConnectionFactory(), 0); }
}
@Bean(BEAN_REDIS_FACTORY1) @Bean(BEAN_REDIS_FACTORY2)
@ConditionalOnProperty(name = "yexuejc.redis.db1") @ConditionalOnProperty(name = "yexuejc.redis.db2")
public JedisConnectionFactory redisConnectionFactory1() throws UnknownHostException { public JedisConnectionFactory redisConnectionFactory2() throws UnknownHostException {
return applyProperties(createJedisConnectionFactory(), 1); return createJedisConnectionFactory(2);
} }
@Bean(BEAN_REDIS_FACTORY2) @Bean(BEAN_REDIS_FACTORY3)
@ConditionalOnProperty(name = "yexuejc.redis.db2") @ConditionalOnProperty(name = "yexuejc.redis.db3")
public JedisConnectionFactory redisConnectionFactory2() throws UnknownHostException { public JedisConnectionFactory redisConnectionFactory3() throws UnknownHostException {
return applyProperties(createJedisConnectionFactory(), 2); return createJedisConnectionFactory(3);
} }
@Bean(BEAN_REDIS_FACTORY3) @Bean(BEAN_REDIS_FACTORY4)
@ConditionalOnProperty(name = "yexuejc.redis.db3") @ConditionalOnProperty(name = "yexuejc.redis.db4")
public JedisConnectionFactory redisConnectionFactory3() throws UnknownHostException { public JedisConnectionFactory redisConnectionFactory4() throws UnknownHostException {
return applyProperties(createJedisConnectionFactory(), 3); return createJedisConnectionFactory(4);
} }
@Bean(BEAN_REDIS_FACTORY4) @Bean(BEAN_REDIS_FACTORY5)
@ConditionalOnProperty(name = "yexuejc.redis.db4") @ConditionalOnProperty(name = "yexuejc.redis.db5")
public JedisConnectionFactory redisConnectionFactory4() throws UnknownHostException { public JedisConnectionFactory redisConnectionFactory5() throws UnknownHostException {
return applyProperties(createJedisConnectionFactory(), 4); return createJedisConnectionFactory(5);
} }
@Bean(BEAN_REDIS_FACTORY5) @Bean(BEAN_REDIS_FACTORY6)
@ConditionalOnProperty(name = "yexuejc.redis.db5") @ConditionalOnProperty(name = "yexuejc.redis.db6")
public JedisConnectionFactory redisConnectionFactory5() throws UnknownHostException { public JedisConnectionFactory redisConnectionFactory6() throws UnknownHostException {
return applyProperties(createJedisConnectionFactory(), 5); return createJedisConnectionFactory(6);
} }
@Bean(BEAN_REDIS_FACTORY6) @Bean(BEAN_REDIS_FACTORY7)
@ConditionalOnProperty(name = "yexuejc.redis.db6") @ConditionalOnProperty(name = "yexuejc.redis.db7")
public JedisConnectionFactory redisConnectionFactory6() throws UnknownHostException { public JedisConnectionFactory redisConnectionFactory7() throws UnknownHostException {
return applyProperties(createJedisConnectionFactory(), 6); return createJedisConnectionFactory(7);
} }
@Bean(BEAN_REDIS_FACTORY7) @Bean(BEAN_REDIS_FACTORY8)
@ConditionalOnProperty(name = "yexuejc.redis.db7") @ConditionalOnProperty(name = "yexuejc.redis.db8")
public JedisConnectionFactory redisConnectionFactory7() throws UnknownHostException { public JedisConnectionFactory redisConnectionFactory8() throws UnknownHostException {
return applyProperties(createJedisConnectionFactory(), 7); return createJedisConnectionFactory(8);
} }
@Bean(BEAN_REDIS_FACTORY8) @Bean(BEAN_REDIS_FACTORY9)
@ConditionalOnProperty(name = "yexuejc.redis.db8") @ConditionalOnProperty(name = "yexuejc.redis.db9")
public JedisConnectionFactory redisConnectionFactory8() throws UnknownHostException { public JedisConnectionFactory redisConnectionFactory9() throws UnknownHostException {
return applyProperties(createJedisConnectionFactory(), 8); return createJedisConnectionFactory(9);
} }
@Bean(BEAN_REDIS_FACTORY9) private JedisConnectionFactory createJedisConnectionFactory(int database) {
@ConditionalOnProperty(name = "yexuejc.redis.db9") RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
public JedisConnectionFactory redisConnectionFactory9() throws UnknownHostException { redisStandaloneConfiguration.setHostName(properties.getHost());
return applyProperties(createJedisConnectionFactory(), 9); redisStandaloneConfiguration.setPort(properties.getPort());
} redisStandaloneConfiguration.setDatabase(database);
redisStandaloneConfiguration.setPassword(RedisPassword.of(properties.getPassword()));
protected final JedisConnectionFactory applyProperties(JedisConnectionFactory factory, int database) { JedisClientConfiguration.JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder();
configureConnection(factory);
if (this.properties.isSsl()) {
factory.setUseSsl(true);
}
factory.setDatabase(database);
if (this.properties.getTimeout() > 0) {
factory.setTimeout(this.properties.getTimeout());
}
return factory;
}
private void configureConnection(JedisConnectionFactory factory) { JedisConnectionFactory factory = new JedisConnectionFactory(redisStandaloneConfiguration,
if (StringUtils.hasText(this.properties.getUrl())) { jedisClientConfiguration.build());
configureConnectionFromUrl(factory); return factory;
} else { }
factory.setHostName(this.properties.getHost());
factory.setPort(this.properties.getPort());
if (this.properties.getPassword() != null) {
factory.setPassword(this.properties.getPassword());
}
}
}
private void configureConnectionFromUrl(JedisConnectionFactory factory) { }
String url = this.properties.getUrl();
if (url.startsWith("rediss://")) {
factory.setUseSsl(true);
}
try {
URI uri = new URI(url);
factory.setHostName(uri.getHost());
factory.setPort(uri.getPort());
if (uri.getUserInfo() != null) {
String password = uri.getUserInfo();
int index = password.lastIndexOf(":");
if (index >= 0) {
password = password.substring(index + 1);
}
factory.setPassword(password);
}
} catch (URISyntaxException ex) {
throw new IllegalArgumentException("Malformed 'spring.redis.url' " + url, ex);
}
}
protected final RedisSentinelConfiguration getSentinelConfig() {
if (this.sentinelConfiguration != null) {
return this.sentinelConfiguration;
}
Sentinel sentinelProperties = this.properties.getSentinel();
if (sentinelProperties != null) {
RedisSentinelConfiguration config = new RedisSentinelConfiguration();
config.master(sentinelProperties.getMaster());
config.setSentinels(createSentinels(sentinelProperties));
return config;
}
return null;
}
/** /**
* Create a {@link RedisClusterConfiguration} if necessary. * Standard Redis configuration.
* */
* @return {@literal null} if no cluster settings are set. @Configuration
*/ protected static class RedisConfiguration {
protected final RedisClusterConfiguration getClusterConfiguration() {
if (this.clusterConfiguration != null) {
return this.clusterConfiguration;
}
if (this.properties.getCluster() == null) {
return null;
}
Cluster clusterProperties = this.properties.getCluster();
RedisClusterConfiguration config = new RedisClusterConfiguration(clusterProperties.getNodes());
if (clusterProperties.getMaxRedirects() != null) { @Primary
config.setMaxRedirects(clusterProperties.getMaxRedirects()); @Bean(BEAN_REDIS_TEMPLATE0)
} @ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
return config; public RedisTemplate<Object, Object> redisTemplate(
} @Qualifier(BEAN_REDIS_FACTORY0) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
return createRedisTemplate(redisConnectionFactory);
}
private List<RedisNode> createSentinels(Sentinel sentinel) { @Bean(BEAN_REDIS_STRING_TEMPLATE0)
List<RedisNode> nodes = new ArrayList<RedisNode>(); @ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
for (String node : StringUtils.commaDelimitedListToStringArray(sentinel.getNodes())) { public StringRedisTemplate stringRedisTemplate(
try { @Qualifier(BEAN_REDIS_FACTORY0) RedisConnectionFactory redisConnectionFactory)
String[] parts = StringUtils.split(node, ":"); throws UnknownHostException {
Assert.state(parts.length == 2, "Must be defined as 'host:port'"); return createStringRedisTemplate(redisConnectionFactory);
nodes.add(new RedisNode(parts[0], Integer.valueOf(parts[1]))); }
} catch (RuntimeException ex) {
throw new IllegalStateException("Invalid redis sentinel " + "property '" + node + "'", ex);
}
}
return nodes;
}
private JedisConnectionFactory createJedisConnectionFactory() { @Bean(BEAN_REDIS_TEMPLATE1)
JedisPoolConfig poolConfig = this.properties.getPool() != null ? jedisPoolConfig() : new JedisPoolConfig(); @ConditionalOnProperty(name = "yexuejc.redis.db1")
public RedisTemplate<Object, Object> redisTemplate1(
@Qualifier(BEAN_REDIS_FACTORY1) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
return createRedisTemplate(redisConnectionFactory);
}
if (getSentinelConfig() != null) { @Bean(BEAN_REDIS_STRING_TEMPLATE1)
return new JedisConnectionFactory(getSentinelConfig(), poolConfig); @ConditionalOnProperty(name = "yexuejc.redis.db1")
} public StringRedisTemplate stringRedisTemplate1(
if (getClusterConfiguration() != null) { @Qualifier(BEAN_REDIS_FACTORY1) RedisConnectionFactory redisConnectionFactory)
return new JedisConnectionFactory(getClusterConfiguration(), poolConfig); throws UnknownHostException {
} return createStringRedisTemplate(redisConnectionFactory);
return new JedisConnectionFactory(poolConfig); }
}
private JedisPoolConfig jedisPoolConfig() { @Bean(BEAN_REDIS_TEMPLATE2)
JedisPoolConfig config = new JedisPoolConfig(); @ConditionalOnProperty(name = "yexuejc.redis.db2")
RedisProperties.Pool props = this.properties.getPool(); public RedisTemplate<Object, Object> redisTemplate2(
config.setMaxTotal(props.getMaxActive()); @Qualifier(BEAN_REDIS_FACTORY2) RedisConnectionFactory redisConnectionFactory)
config.setMaxIdle(props.getMaxIdle()); throws UnknownHostException {
config.setMinIdle(props.getMinIdle()); return createRedisTemplate(redisConnectionFactory);
config.setMaxWaitMillis(props.getMaxWait()); }
return config;
}
} @Bean(BEAN_REDIS_STRING_TEMPLATE2)
@ConditionalOnProperty(name = "yexuejc.redis.db2")
public StringRedisTemplate stringRedisTemplate2(
@Qualifier(BEAN_REDIS_FACTORY2) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
return createStringRedisTemplate(redisConnectionFactory);
}
/** @Bean(BEAN_REDIS_TEMPLATE3)
* Standard Redis configuration. @ConditionalOnProperty(name = "yexuejc.redis.db3")
*/ public RedisTemplate<Object, Object> redisTemplate3(
@Configuration @Qualifier(BEAN_REDIS_FACTORY3) RedisConnectionFactory redisConnectionFactory)
protected static class RedisConfiguration { throws UnknownHostException {
return createRedisTemplate(redisConnectionFactory);
}
@Primary @Bean(BEAN_REDIS_STRING_TEMPLATE3)
@Bean(BEAN_REDIS_TEMPLATE0) @ConditionalOnProperty(name = "yexuejc.redis.db3")
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true) public StringRedisTemplate stringRedisTemplate3(
public RedisTemplate<Object, Object> redisTemplate( @Qualifier(BEAN_REDIS_FACTORY3) RedisConnectionFactory redisConnectionFactory)
@Qualifier(BEAN_REDIS_FACTORY0) RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
throws UnknownHostException { return createStringRedisTemplate(redisConnectionFactory);
return createRedisTemplate(redisConnectionFactory); }
}
@Bean(BEAN_REDIS_STRING_TEMPLATE0) @Bean(BEAN_REDIS_TEMPLATE4)
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true) @ConditionalOnProperty(name = "yexuejc.redis.db4")
public StringRedisTemplate stringRedisTemplate( public RedisTemplate<Object, Object> redisTemplate4(
@Qualifier(BEAN_REDIS_FACTORY0) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY4) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createStringRedisTemplate(redisConnectionFactory); return createRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_TEMPLATE1) @Bean(BEAN_REDIS_STRING_TEMPLATE4)
@ConditionalOnProperty(name = "yexuejc.redis.db1") @ConditionalOnProperty(name = "yexuejc.redis.db4")
public RedisTemplate<Object, Object> redisTemplate1( public StringRedisTemplate stringRedisTemplate4(
@Qualifier(BEAN_REDIS_FACTORY1) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY4) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createRedisTemplate(redisConnectionFactory); return createStringRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_STRING_TEMPLATE1) @Bean(BEAN_REDIS_TEMPLATE5)
@ConditionalOnProperty(name = "yexuejc.redis.db1") @ConditionalOnProperty(name = "yexuejc.redis.db5")
public StringRedisTemplate stringRedisTemplate1( public RedisTemplate<Object, Object> redisTemplate5(
@Qualifier(BEAN_REDIS_FACTORY1) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY5) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createStringRedisTemplate(redisConnectionFactory); return createRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_TEMPLATE2) @Bean(BEAN_REDIS_STRING_TEMPLATE5)
@ConditionalOnProperty(name = "yexuejc.redis.db2") @ConditionalOnProperty(name = "yexuejc.redis.db5")
public RedisTemplate<Object, Object> redisTemplate2( public StringRedisTemplate stringRedisTemplate5(
@Qualifier(BEAN_REDIS_FACTORY2) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY5) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createRedisTemplate(redisConnectionFactory); return createStringRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_STRING_TEMPLATE2) @Bean(BEAN_REDIS_TEMPLATE6)
@ConditionalOnProperty(name = "yexuejc.redis.db2") @ConditionalOnProperty(name = "yexuejc.redis.db6")
public StringRedisTemplate stringRedisTemplate2( public RedisTemplate<Object, Object> redisTemplate6(
@Qualifier(BEAN_REDIS_FACTORY2) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY6) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createStringRedisTemplate(redisConnectionFactory); return createRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_TEMPLATE3) @Bean(BEAN_REDIS_STRING_TEMPLATE6)
@ConditionalOnProperty(name = "yexuejc.redis.db3") @ConditionalOnProperty(name = "yexuejc.redis.db6")
public RedisTemplate<Object, Object> redisTemplate3( public StringRedisTemplate stringRedisTemplate6(
@Qualifier(BEAN_REDIS_FACTORY3) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY6) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createRedisTemplate(redisConnectionFactory); return createStringRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_STRING_TEMPLATE3) @Bean(BEAN_REDIS_TEMPLATE7)
@ConditionalOnProperty(name = "yexuejc.redis.db3") @ConditionalOnProperty(name = "yexuejc.redis.db7")
public StringRedisTemplate stringRedisTemplate3( public RedisTemplate<Object, Object> redisTemplate7(
@Qualifier(BEAN_REDIS_FACTORY3) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY7) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createStringRedisTemplate(redisConnectionFactory); return createRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_TEMPLATE4) @Bean(BEAN_REDIS_STRING_TEMPLATE7)
@ConditionalOnProperty(name = "yexuejc.redis.db4") @ConditionalOnProperty(name = "yexuejc.redis.db7")
public RedisTemplate<Object, Object> redisTemplate4( public StringRedisTemplate stringRedisTemplate7(
@Qualifier(BEAN_REDIS_FACTORY4) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY7) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createRedisTemplate(redisConnectionFactory); return createStringRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_STRING_TEMPLATE4) @Bean(BEAN_REDIS_TEMPLATE8)
@ConditionalOnProperty(name = "yexuejc.redis.db4") @ConditionalOnProperty(name = "yexuejc.redis.db8")
public StringRedisTemplate stringRedisTemplate4( public RedisTemplate<Object, Object> redisTemplate8(
@Qualifier(BEAN_REDIS_FACTORY4) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY8) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createStringRedisTemplate(redisConnectionFactory); return createRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_TEMPLATE5) @Bean(BEAN_REDIS_STRING_TEMPLATE8)
@ConditionalOnProperty(name = "yexuejc.redis.db5") @ConditionalOnProperty(name = "yexuejc.redis.db8")
public RedisTemplate<Object, Object> redisTemplate5( public StringRedisTemplate stringRedisTemplate8(
@Qualifier(BEAN_REDIS_FACTORY5) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY8) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createRedisTemplate(redisConnectionFactory); return createStringRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_STRING_TEMPLATE5) @Bean(BEAN_REDIS_TEMPLATE9)
@ConditionalOnProperty(name = "yexuejc.redis.db5") @ConditionalOnProperty(name = "yexuejc.redis.db9")
public StringRedisTemplate stringRedisTemplate5( public RedisTemplate<Object, Object> redisTemplate9(
@Qualifier(BEAN_REDIS_FACTORY5) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY9) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createStringRedisTemplate(redisConnectionFactory); return createRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_TEMPLATE6) @Bean(BEAN_REDIS_STRING_TEMPLATE9)
@ConditionalOnProperty(name = "yexuejc.redis.db6") @ConditionalOnProperty(name = "yexuejc.redis.db9")
public RedisTemplate<Object, Object> redisTemplate6( public StringRedisTemplate stringRedisTemplate9(
@Qualifier(BEAN_REDIS_FACTORY6) RedisConnectionFactory redisConnectionFactory) @Qualifier(BEAN_REDIS_FACTORY9) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException { throws UnknownHostException {
return createRedisTemplate(redisConnectionFactory); return createStringRedisTemplate(redisConnectionFactory);
} }
@Bean(BEAN_REDIS_STRING_TEMPLATE6) private RedisTemplate<Object, Object> createRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
@ConditionalOnProperty(name = "yexuejc.redis.db6") RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
public StringRedisTemplate stringRedisTemplate6( template.setHashKeySerializer(new StringRedisSerializer());
@Qualifier(BEAN_REDIS_FACTORY6) RedisConnectionFactory redisConnectionFactory) template.setHashValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));
throws UnknownHostException { template.setKeySerializer(new StringRedisSerializer());
return createStringRedisTemplate(redisConnectionFactory); template.setDefaultSerializer(new StringRedisSerializer());
} template.setValueSerializer(new StringRedisSerializer());
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean(BEAN_REDIS_TEMPLATE7) private StringRedisTemplate createStringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
@ConditionalOnProperty(name = "yexuejc.redis.db7") StringRedisTemplate template = new StringRedisTemplate();
public RedisTemplate<Object, Object> redisTemplate7( template.setConnectionFactory(redisConnectionFactory);
@Qualifier(BEAN_REDIS_FACTORY7) RedisConnectionFactory redisConnectionFactory) return template;
throws UnknownHostException { }
return createRedisTemplate(redisConnectionFactory);
}
@Bean(BEAN_REDIS_STRING_TEMPLATE7)
@ConditionalOnProperty(name = "yexuejc.redis.db7")
public StringRedisTemplate stringRedisTemplate7(
@Qualifier(BEAN_REDIS_FACTORY7) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
return createStringRedisTemplate(redisConnectionFactory);
}
@Bean(BEAN_REDIS_TEMPLATE8)
@ConditionalOnProperty(name = "yexuejc.redis.db8")
public RedisTemplate<Object, Object> redisTemplate8(
@Qualifier(BEAN_REDIS_FACTORY8) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
return createRedisTemplate(redisConnectionFactory);
}
@Bean(BEAN_REDIS_STRING_TEMPLATE8)
@ConditionalOnProperty(name = "yexuejc.redis.db8")
public StringRedisTemplate stringRedisTemplate8(
@Qualifier(BEAN_REDIS_FACTORY8) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
return createStringRedisTemplate(redisConnectionFactory);
}
@Bean(BEAN_REDIS_TEMPLATE9)
@ConditionalOnProperty(name = "yexuejc.redis.db9")
public RedisTemplate<Object, Object> redisTemplate9(
@Qualifier(BEAN_REDIS_FACTORY9) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
return createRedisTemplate(redisConnectionFactory);
}
@Bean(BEAN_REDIS_STRING_TEMPLATE9)
@ConditionalOnProperty(name = "yexuejc.redis.db9")
public StringRedisTemplate stringRedisTemplate9(
@Qualifier(BEAN_REDIS_FACTORY9) RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
return createStringRedisTemplate(redisConnectionFactory);
}
private RedisTemplate<Object, Object> createRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));
template.setKeySerializer(new StringRedisSerializer());
template.setDefaultSerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
template.setConnectionFactory(redisConnectionFactory);
return template;
}
private StringRedisTemplate createStringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
}
} }

View File

@ -0,0 +1,57 @@
package com.yexuejc.springboot.base.test;
import com.yexuejc.base.util.JsonUtil;
import com.yexuejc.springboot.base.ApplicationRun;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* @author maxf
* @PackageName com.yexuejc.springboot.base.test
* @Description
* @date 2018/9/26 16:28
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = ApplicationRun.class)
public class RedisTest {
@Autowired
@Qualifier(RedisAutoConfiguration.BEAN_REDIS_TEMPLATE0)
RedisTemplate redisTemplate;
@Test
public void insert() {
Map<String,Object> map = new HashMap<>();
map.put("a","b");
map.put("c",1);
map.put("aac",true);
map.put("q","asdb");
redisTemplate.opsForHash().putAll("test.redis",map);
redisTemplate.expire("test.redis",10, TimeUnit.MINUTES);
}
@Test
public void get() {
Map<String,Object> map = redisTemplate.opsForHash().entries("test.redis");
System.out.println(JsonUtil.obj2Json(map));
}
@Test
public void update() {
Map<String,Object> map = redisTemplate.opsForHash().entries("test.redis");
redisTemplate.opsForHash().put("test.redis","q","123456798");
System.out.println(JsonUtil.obj2Json(map));
}
@Test
public void del() {
Boolean delete = redisTemplate.delete("test.redis");
System.out.println(delete);
}
}

View File

@ -94,4 +94,5 @@ public class IndexCtrl {
return Resps.success().setSucc(map); return Resps.success().setSucc(map);
} }
} }

View File

@ -1,8 +1,6 @@
server.port=8888 server.port=8888
logging.level.root=info logging.level.root=info
security.basic.enabled=false
yexuejc.http.filter.type=0 yexuejc.http.filter.type=0
@ -24,4 +22,10 @@ spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8 server.tomcat.uri-encoding=UTF-8
#是否开启HTTPSSSL请求证书验证忽略默认false #是否开启HTTPSSSL请求证书验证忽略默认false
yexuejc.enable.ssl-ignore=true yexuejc.enable.ssl-ignore=true
yexuejc.redis.db1=true
yexuejc.redis.db2=true
spring.redis.host=121.42.165.89
spring.redis.password=
spring.redis.port=16379