整理集成文档,未发布版本
This commit is contained in:
parent
3059d4c8f2
commit
e8117a7dea
|
@ -106,5 +106,4 @@ pom.xml
|
|||
|
||||
[更新记录](UPDATE.md)
|
||||
<br/>
|
||||
[1.0.6新增 针对API请求安全解决方案](PARAMS_RSA_DECRYPT_ENCRYPT.md)<br/>
|
||||
[1.0.6新增 加密功能](PARAMS_RSA_DECRYPT_ENCRYPT.md)
|
||||
[相关功能使用指南](doc/MENU.md)
|
||||
|
|
|
@ -168,7 +168,7 @@ yexuejc.http.encrypt.private-pwd=密码
|
|||
**time:** 2018-5-4 09:54:18<br/>
|
||||
**branch:** master <br/>
|
||||
**update:** <br/>
|
||||
> [使用加密解密](PARAMS_RSA_DECRYPT_ENCRYPT.md)
|
||||
> [使用加密解密](doc/PARAMS_RSA_DECRYPT_ENCRYPT.md)
|
||||
>
|
||||
>1.增加json入参解密、出参加密
|
||||
#
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
功能目录
|
||||
------------------------
|
||||
|
||||
### 第三方集成
|
||||
#
|
||||
* [redis 集成](REDIS.md)
|
||||
* [Aliyun MNS 消息队列](MNS.md)
|
||||
* [Aliyun OSS 对象存储](OSS.md)
|
||||
|
||||
### 内部集成
|
||||
#
|
||||
* [1.0.6新增 针对API请求安全解决方案](PARAMS_RSA_DECRYPT_ENCRYPT.md)<br/>
|
||||
* [1.0.6新增 加密功能](PARAMS_RSA_DECRYPT_ENCRYPT.md)
|
|
@ -0,0 +1,34 @@
|
|||
aliyun MNS 消息队列 使用指南
|
||||
-------------
|
||||
* 本项目依赖不向下传递
|
||||
* 开通请参考[阿里云-消息服务-MNS](https://help.aliyun.com/product/27412.html?spm=5176.7944397.207973.oss4.4d1ab2418oQPP0)
|
||||
|
||||
> 引入依赖 pom.xml
|
||||
|
||||
```mxml
|
||||
<dependencies>
|
||||
<!-- 阿里云基础SDK -->
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>aliyun-java-sdk-core</artifactId>
|
||||
</dependency>
|
||||
<!-- 阿里云消息服务MNS相关SDK -->
|
||||
<dependency>
|
||||
<groupId>com.aliyun.mns</groupId>
|
||||
<artifactId>aliyun-sdk-mns</artifactId>
|
||||
<classifier>jar-with-dependencies</classifier>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
```
|
||||
> 配置
|
||||
```
|
||||
#mns
|
||||
yexuejc.alibaba.mns.access-key-id=阿里MNS提供的AccessKey
|
||||
yexuejc.alibaba.mns.access-key-secret=阿里MNS提供的的SecretKey
|
||||
yexuejc.alibaba.mns.endpoint=MNS接入endpoint,公网,私网,VPC各不相同,需要分环境配置
|
||||
yexuejc.alibaba.mns.queue-name-prefix=队列名称前缀
|
||||
```
|
||||
|
||||
> 使用example
|
||||
|
||||
参考[MnsTest.java](../yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/MnsTest.java)
|
|
@ -0,0 +1,36 @@
|
|||
aliyun OSS 对象存储 使用指南
|
||||
-------------
|
||||
* 本项目依赖不向下传递
|
||||
* 开通请参考[阿里云对象存储-OSS](https://help.aliyun.com/document_detail/32008.html?spm=5176.87240.400427.45.1dd74614DiKpxR)
|
||||
|
||||
_本工程暂提供上传功能_
|
||||
|
||||
> 引入依赖 pom.xml
|
||||
|
||||
```mxml
|
||||
<dependencies>
|
||||
<!-- 阿里云基础SDK -->
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>aliyun-java-sdk-core</artifactId>
|
||||
</dependency>
|
||||
<!-- 阿里云OSS相关SDK -->
|
||||
<dependency>
|
||||
<groupId>com.aliyun.oss</groupId>
|
||||
<artifactId>aliyun-sdk-oss</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
```
|
||||
> 配置
|
||||
```
|
||||
#OSS
|
||||
yexuejc.alibaba.oss.endpoint=阿里OSS提供的endpoint
|
||||
yexuejc.alibaba.oss.access-key-secret=阿里OSS提供的SecretKey
|
||||
yexuejc.alibaba.oss.access-key-id=阿里OSS提供的AccessKey
|
||||
yexuejc.alibaba.oss.bucket=阿里OSS提供的bucket
|
||||
|
||||
```
|
||||
|
||||
> 使用example
|
||||
|
||||
参考[OssTest.java](../yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/OssTest.java)
|
|
@ -0,0 +1,30 @@
|
|||
redis 使用指南
|
||||
-------------
|
||||
* 本项目依赖不向下传递
|
||||
|
||||
> 引入依赖 pom.xml
|
||||
|
||||
```mxml
|
||||
<dependencies>
|
||||
<!-- 使用Redis -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-redis</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>redis.clients</groupId>
|
||||
<artifactId>jedis</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
```
|
||||
> 配置
|
||||
```
|
||||
#reids
|
||||
spring.redis.host=你的reids地址
|
||||
spring.redis.password=密码
|
||||
spring.redis.port=端口
|
||||
```
|
||||
|
||||
> 使用example
|
||||
|
||||
参考[RedisTest.java](../yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/test/RedisTest.java)
|
5
pom.xml
5
pom.xml
|
@ -38,11 +38,11 @@
|
|||
<fastjson.version>1.2.49</fastjson.version>
|
||||
<commons-codec.version>1.11</commons-codec.version>
|
||||
<!-- 阿里云相关 -->
|
||||
<aliyun-java-sdk-core.version>4.0.8</aliyun-java-sdk-core.version>
|
||||
<aliyun-java-sdk-core.version>4.1.1</aliyun-java-sdk-core.version>
|
||||
<aliyun-java-sdk-sts.version>3.0.0</aliyun-java-sdk-sts.version>
|
||||
<aliyun-sdk-oss.version>3.1.0</aliyun-sdk-oss.version>
|
||||
<aliyun-java-sdk-dysmsapi.version>1.1.0</aliyun-java-sdk-dysmsapi.version>
|
||||
<aliyun-sdk-mns.version>1.1.8.6</aliyun-sdk-mns.version>
|
||||
<aliyun-sdk-mns.version>1.1.8</aliyun-sdk-mns.version>
|
||||
<!-- 支付宝相关 -->
|
||||
<alipay-sdk-java.version>3.3.49.ALL</alipay-sdk-java.version>
|
||||
<!-- 微信相关 -->
|
||||
|
@ -173,6 +173,7 @@
|
|||
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
|
||||
<version>${aliyun-java-sdk-dysmsapi.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 阿里云消息服务MNS相关SDK -->
|
||||
<dependency>
|
||||
<groupId>com.aliyun.mns</groupId>
|
||||
|
|
|
@ -79,6 +79,13 @@
|
|||
<artifactId>jedis</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<!-- 阿里云消息服务MNS相关SDK -->
|
||||
<dependency>
|
||||
<groupId>com.aliyun.mns</groupId>
|
||||
<artifactId>aliyun-sdk-mns</artifactId>
|
||||
<classifier>jar-with-dependencies</classifier>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
package com.yexuejc.springboot.base.autoconfigure;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import com.aliyun.mns.client.MNSClient;
|
||||
|
||||
/**
|
||||
* 阿里云消息服务MNS相关配置
|
||||
*
|
||||
* @author maxf
|
||||
* @version 1.0
|
||||
* @ClassName MnsAutoConfiguration
|
||||
* @Description
|
||||
* @date 2018/11/1 10:04
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnClass(MNSClient.class)
|
||||
@EnableConfigurationProperties(MnsProperties.class)
|
||||
public class MnsAutoConfiguration {
|
||||
private final MnsProperties properties;
|
||||
|
||||
public MnsAutoConfiguration(MnsProperties properties) {
|
||||
super();
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public MnsFacade mnsFacade() {
|
||||
return new MnsFacade(properties);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,168 @@
|
|||
|
||||
package com.yexuejc.springboot.base.autoconfigure;
|
||||
|
||||
import com.aliyun.mns.client.CloudAccount;
|
||||
import com.aliyun.mns.client.CloudTopic;
|
||||
import com.aliyun.mns.client.MNSClient;
|
||||
import com.aliyun.mns.model.*;
|
||||
import com.yexuejc.springboot.base.util.LogUtil;
|
||||
|
||||
/**
|
||||
* 阿里云消息服务MNS操作类
|
||||
*
|
||||
* @author maxf
|
||||
* @version 1.0
|
||||
* @ClassName MnsFacade
|
||||
* @Description
|
||||
* @date 2018/11/1 10:21
|
||||
*/
|
||||
public class MnsFacade {
|
||||
/**
|
||||
* 默认长轮询等待秒数
|
||||
*/
|
||||
private static int DEFAULT_WAIT_SECONDS = 15;
|
||||
|
||||
/**
|
||||
* 项目中需要用到的所有队列
|
||||
*/
|
||||
private MNSClient client;
|
||||
/**
|
||||
* MNS相关配置
|
||||
*/
|
||||
private MnsProperties properties;
|
||||
|
||||
public MnsFacade(MnsProperties properties) {
|
||||
CloudAccount account = new CloudAccount(properties.getAccessKeyId(), properties.getAccessKeySecret(),
|
||||
properties.getEndpoint());
|
||||
this.client = account.getMNSClient();
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送消息
|
||||
*
|
||||
* @param queueName 发送对象队列名
|
||||
* @param msg 发送的消息字符串,使用json格式
|
||||
* @param delaySeconds 发送成功的Message对象
|
||||
* @return
|
||||
*/
|
||||
public Message sendMsg(String queueName, String msg, int delaySeconds) {
|
||||
Message message = new Message();
|
||||
message.setMessageBody(msg);
|
||||
message.setDelaySeconds(delaySeconds);
|
||||
LogUtil.bizLogger.debug("[alibaba-MNS]发送消息{}:{}", queueName, msg);
|
||||
return client.getQueueRef(queueFullName(queueName)).putMessage(message);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 取出消息
|
||||
*
|
||||
* @param queueName 接收对象对列名
|
||||
* @return 接收成功的Message对象
|
||||
*/
|
||||
public Message popMsg(String queueName) {
|
||||
return client.getQueueRef(queueFullName(queueName)).popMessage(DEFAULT_WAIT_SECONDS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 取出消息 长轮询
|
||||
*
|
||||
* @param queueName 接收对象对列名
|
||||
* @param waitSeconds 接收成功的Message对象
|
||||
* @return
|
||||
*/
|
||||
public Message popMsg(String queueName, int waitSeconds) {
|
||||
return client.getQueueRef(queueFullName(queueName)).popMessage(waitSeconds);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除消息
|
||||
*
|
||||
* @param queueName 删除对象对列名
|
||||
* @param msg 需要删除的Message对象
|
||||
*/
|
||||
public void deleteMsg(String queueName, Message msg) {
|
||||
LogUtil.bizLogger.info("删除对象--:queueName{},msg{}", queueName, msg);
|
||||
client.getQueueRef(queueFullName(queueName)).deleteMessage(msg.getReceiptHandle());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回队列全称
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String queueFullName(String queueName) {
|
||||
return properties.getQueueNamePrefix() + "-" + queueName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建主题
|
||||
*/
|
||||
public CloudTopic crtTopic() {
|
||||
TopicMeta topicMeta = new TopicMeta();
|
||||
topicMeta.setTopicName(properties.getTopicName());
|
||||
//是否启用日志
|
||||
topicMeta.setLoggingEnabled(true);
|
||||
return client.createTopic(topicMeta);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除主题
|
||||
*/
|
||||
public void delTopic() {
|
||||
getTopic().delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主题
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public CloudTopic getTopic() {
|
||||
return client.getTopicRef(properties.getTopicName());
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建订阅
|
||||
*/
|
||||
public void subscribe(String subscriptionName, String queueName) {
|
||||
CloudTopic topic = getTopic();
|
||||
SubscriptionMeta subMeta = new SubscriptionMeta();
|
||||
subMeta.setSubscriptionName(subscriptionName);
|
||||
subMeta.setNotifyContentFormat(SubscriptionMeta.NotifyContentFormat.SIMPLIFIED);
|
||||
subMeta.setEndpoint(topic.generateQueueEndpoint(queueFullName(queueName)));
|
||||
topic.subscribe(subMeta);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送消息
|
||||
*
|
||||
* @param message
|
||||
* @return
|
||||
*/
|
||||
public TopicMessage publishMessage(String message) {
|
||||
CloudTopic topic = getTopic();
|
||||
//可以使用TopicMessage结构,选择不进行Base64加密
|
||||
TopicMessage msg = new Base64TopicMessage();
|
||||
msg.setMessageBody(message);
|
||||
msg = topic.publishMessage(msg);
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 取出消息
|
||||
*
|
||||
* @param queueName
|
||||
* @return
|
||||
*/
|
||||
public Message popTopicMessage(String queueName) {
|
||||
QueueMeta queueMeta = new QueueMeta();
|
||||
queueMeta.setQueueName(queueFullName(queueName));
|
||||
return client.createQueue(queueMeta).popMessage(DEFAULT_WAIT_SECONDS);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
package com.yexuejc.springboot.base.autoconfigure;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* 阿里云消息服务MNS相关配置
|
||||
*
|
||||
* @author maxf
|
||||
* @version 1.0
|
||||
* @ClassName MnsProperties
|
||||
* @Description
|
||||
* @date 2018/11/1 10:27
|
||||
*/
|
||||
@ConfigurationProperties(prefix = "yexuejc.alibaba.mns")
|
||||
public class MnsProperties {
|
||||
/**
|
||||
* 在RAM创建的AccessKey
|
||||
*/
|
||||
private String accessKeyId="xxxxxxxxxx";
|
||||
/**
|
||||
* 在RAM创建的SecretKey
|
||||
*/
|
||||
private String accessKeySecret="xxxxxxxxx";
|
||||
/**
|
||||
* MNS接入endpoint,公网,私网,VPC各不相同,需要分环境配置
|
||||
*/
|
||||
private String endpoint="http://00000000.mns.cn-hangzhou.aliyuncs.com";
|
||||
|
||||
/**
|
||||
* 队列名称前缀(消费端为CONSUMER,测试环境为IVT-CONSUMER)
|
||||
*/
|
||||
private String queueNamePrefix;
|
||||
private String topicName = "IVT";
|
||||
|
||||
public String getAccessKeyId() {
|
||||
return accessKeyId;
|
||||
}
|
||||
|
||||
public void setAccessKeyId(String accessKeyId) {
|
||||
this.accessKeyId = accessKeyId;
|
||||
}
|
||||
|
||||
public String getAccessKeySecret() {
|
||||
return accessKeySecret;
|
||||
}
|
||||
|
||||
public void setAccessKeySecret(String accessKeySecret) {
|
||||
this.accessKeySecret = accessKeySecret;
|
||||
}
|
||||
|
||||
public String getEndpoint() {
|
||||
return endpoint;
|
||||
}
|
||||
|
||||
public void setEndpoint(String endpoint) {
|
||||
this.endpoint = endpoint;
|
||||
}
|
||||
|
||||
public String getQueueNamePrefix() {
|
||||
return queueNamePrefix;
|
||||
}
|
||||
|
||||
public void setQueueNamePrefix(String queueNamePrefix) {
|
||||
this.queueNamePrefix = queueNamePrefix;
|
||||
}
|
||||
|
||||
public String getTopicName() {
|
||||
return topicName;
|
||||
}
|
||||
|
||||
public void setTopicName(String topicName) {
|
||||
this.topicName = topicName;
|
||||
}
|
||||
}
|
|
@ -35,429 +35,438 @@ import java.net.UnknownHostException;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 对redis封装
|
||||
*
|
||||
* @author maxf
|
||||
* @version 1.0
|
||||
* @ClassName MutiRedisAutoConfiguration
|
||||
* @Description
|
||||
* @date 2018/11/1 10:31
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnClass({ JedisConnection.class, RedisOperations.class, Jedis.class })
|
||||
@ConditionalOnClass({JedisConnection.class, RedisOperations.class, Jedis.class})
|
||||
@EnableConfigurationProperties(RedisProperties.class)
|
||||
@Order(1)
|
||||
public class MutiRedisAutoConfiguration {
|
||||
|
||||
public static final String BEAN_REDIS_FACTORY0 = "redisConnectionFactory";
|
||||
public static final String BEAN_REDIS_TEMPLATE0 = "redisTemplate";
|
||||
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";
|
||||
|
||||
/**
|
||||
* Redis connection configuration.
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnClass(GenericObjectPool.class)
|
||||
protected static class RedisConnectionConfiguration {
|
||||
public static final String BEAN_REDIS_FACTORY0 = "redisConnectionFactory";
|
||||
public static final String BEAN_REDIS_TEMPLATE0 = "redisTemplate";
|
||||
public static final String BEAN_REDIS_STRING_TEMPLATE0 = "stringRedisTemplate";
|
||||
|
||||
private final RedisProperties properties;
|
||||
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";
|
||||
|
||||
private final RedisSentinelConfiguration sentinelConfiguration;
|
||||
/**
|
||||
* Redis connection configuration.
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnClass(GenericObjectPool.class)
|
||||
protected static class RedisConnectionConfiguration {
|
||||
|
||||
private final RedisClusterConfiguration clusterConfiguration;
|
||||
private final RedisProperties properties;
|
||||
|
||||
public RedisConnectionConfiguration(RedisProperties properties,
|
||||
ObjectProvider<RedisSentinelConfiguration> sentinelConfiguration,
|
||||
ObjectProvider<RedisClusterConfiguration> clusterConfiguration) {
|
||||
this.properties = properties;
|
||||
this.sentinelConfiguration = sentinelConfiguration.getIfAvailable();
|
||||
this.clusterConfiguration = clusterConfiguration.getIfAvailable();
|
||||
}
|
||||
private final RedisSentinelConfiguration sentinelConfiguration;
|
||||
|
||||
@Primary
|
||||
@Bean(BEAN_REDIS_FACTORY0)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
|
||||
public JedisConnectionFactory redisConnectionFactory0() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 0);
|
||||
}
|
||||
private final RedisClusterConfiguration clusterConfiguration;
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY1)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db1")
|
||||
public JedisConnectionFactory redisConnectionFactory1() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 1);
|
||||
}
|
||||
public RedisConnectionConfiguration(RedisProperties properties,
|
||||
ObjectProvider<RedisSentinelConfiguration> sentinelConfiguration,
|
||||
ObjectProvider<RedisClusterConfiguration> clusterConfiguration) {
|
||||
this.properties = properties;
|
||||
this.sentinelConfiguration = sentinelConfiguration.getIfAvailable();
|
||||
this.clusterConfiguration = clusterConfiguration.getIfAvailable();
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY2)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db2")
|
||||
public JedisConnectionFactory redisConnectionFactory2() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 2);
|
||||
}
|
||||
@Primary
|
||||
@Bean(BEAN_REDIS_FACTORY0)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
|
||||
public JedisConnectionFactory redisConnectionFactory0() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 0);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY3)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db3")
|
||||
public JedisConnectionFactory redisConnectionFactory3() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 3);
|
||||
}
|
||||
@Bean(BEAN_REDIS_FACTORY1)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db1")
|
||||
public JedisConnectionFactory redisConnectionFactory1() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 1);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY4)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db4")
|
||||
public JedisConnectionFactory redisConnectionFactory4() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 4);
|
||||
}
|
||||
@Bean(BEAN_REDIS_FACTORY2)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db2")
|
||||
public JedisConnectionFactory redisConnectionFactory2() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 2);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY5)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db5")
|
||||
public JedisConnectionFactory redisConnectionFactory5() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 5);
|
||||
}
|
||||
@Bean(BEAN_REDIS_FACTORY3)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db3")
|
||||
public JedisConnectionFactory redisConnectionFactory3() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 3);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY6)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db6")
|
||||
public JedisConnectionFactory redisConnectionFactory6() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 6);
|
||||
}
|
||||
@Bean(BEAN_REDIS_FACTORY4)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db4")
|
||||
public JedisConnectionFactory redisConnectionFactory4() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 4);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY7)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db7")
|
||||
public JedisConnectionFactory redisConnectionFactory7() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 7);
|
||||
}
|
||||
@Bean(BEAN_REDIS_FACTORY5)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db5")
|
||||
public JedisConnectionFactory redisConnectionFactory5() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 5);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY8)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db8")
|
||||
public JedisConnectionFactory redisConnectionFactory8() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 8);
|
||||
}
|
||||
@Bean(BEAN_REDIS_FACTORY6)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db6")
|
||||
public JedisConnectionFactory redisConnectionFactory6() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 6);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_FACTORY9)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db9")
|
||||
public JedisConnectionFactory redisConnectionFactory9() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 9);
|
||||
}
|
||||
@Bean(BEAN_REDIS_FACTORY7)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db7")
|
||||
public JedisConnectionFactory redisConnectionFactory7() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 7);
|
||||
}
|
||||
|
||||
protected final JedisConnectionFactory applyProperties(JedisConnectionFactory factory, int database) {
|
||||
configureConnection(factory);
|
||||
if (this.properties.isSsl()) {
|
||||
factory.setUseSsl(true);
|
||||
}
|
||||
factory.setDatabase(database);
|
||||
if (this.properties.getTimeout() > 0) {
|
||||
factory.setTimeout(this.properties.getTimeout());
|
||||
}
|
||||
return factory;
|
||||
}
|
||||
@Bean(BEAN_REDIS_FACTORY8)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db8")
|
||||
public JedisConnectionFactory redisConnectionFactory8() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 8);
|
||||
}
|
||||
|
||||
private void configureConnection(JedisConnectionFactory factory) {
|
||||
if (StringUtils.hasText(this.properties.getUrl())) {
|
||||
configureConnectionFromUrl(factory);
|
||||
} else {
|
||||
factory.setHostName(this.properties.getHost());
|
||||
factory.setPort(this.properties.getPort());
|
||||
if (this.properties.getPassword() != null) {
|
||||
factory.setPassword(this.properties.getPassword());
|
||||
}
|
||||
}
|
||||
}
|
||||
@Bean(BEAN_REDIS_FACTORY9)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db9")
|
||||
public JedisConnectionFactory redisConnectionFactory9() throws UnknownHostException {
|
||||
return applyProperties(createJedisConnectionFactory(), 9);
|
||||
}
|
||||
|
||||
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 JedisConnectionFactory applyProperties(JedisConnectionFactory factory, int database) {
|
||||
configureConnection(factory);
|
||||
if (this.properties.isSsl()) {
|
||||
factory.setUseSsl(true);
|
||||
}
|
||||
factory.setDatabase(database);
|
||||
if (this.properties.getTimeout() > 0) {
|
||||
factory.setTimeout(this.properties.getTimeout());
|
||||
}
|
||||
return factory;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
private void configureConnection(JedisConnectionFactory factory) {
|
||||
if (StringUtils.hasText(this.properties.getUrl())) {
|
||||
configureConnectionFromUrl(factory);
|
||||
} else {
|
||||
factory.setHostName(this.properties.getHost());
|
||||
factory.setPort(this.properties.getPort());
|
||||
if (this.properties.getPassword() != null) {
|
||||
factory.setPassword(this.properties.getPassword());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link RedisClusterConfiguration} if necessary.
|
||||
*
|
||||
* @return {@literal null} if no cluster settings are set.
|
||||
*/
|
||||
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());
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
if (clusterProperties.getMaxRedirects() != null) {
|
||||
config.setMaxRedirects(clusterProperties.getMaxRedirects());
|
||||
}
|
||||
return config;
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
private List<RedisNode> createSentinels(Sentinel sentinel) {
|
||||
List<RedisNode> nodes = new ArrayList<RedisNode>();
|
||||
for (String node : StringUtils.commaDelimitedListToStringArray(sentinel.getNodes())) {
|
||||
try {
|
||||
String[] parts = StringUtils.split(node, ":");
|
||||
Assert.state(parts.length == 2, "Must be defined as 'host:port'");
|
||||
nodes.add(new RedisNode(parts[0], Integer.valueOf(parts[1])));
|
||||
} catch (RuntimeException ex) {
|
||||
throw new IllegalStateException("Invalid redis sentinel " + "property '" + node + "'", ex);
|
||||
}
|
||||
}
|
||||
return nodes;
|
||||
}
|
||||
/**
|
||||
* Create a {@link RedisClusterConfiguration} if necessary.
|
||||
*
|
||||
* @return {@literal null} if no cluster settings are set.
|
||||
*/
|
||||
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());
|
||||
|
||||
private JedisConnectionFactory createJedisConnectionFactory() {
|
||||
JedisPoolConfig poolConfig = this.properties.getPool() != null ? jedisPoolConfig() : new JedisPoolConfig();
|
||||
if (clusterProperties.getMaxRedirects() != null) {
|
||||
config.setMaxRedirects(clusterProperties.getMaxRedirects());
|
||||
}
|
||||
return config;
|
||||
}
|
||||
|
||||
if (getSentinelConfig() != null) {
|
||||
return new JedisConnectionFactory(getSentinelConfig(), poolConfig);
|
||||
}
|
||||
if (getClusterConfiguration() != null) {
|
||||
return new JedisConnectionFactory(getClusterConfiguration(), poolConfig);
|
||||
}
|
||||
return new JedisConnectionFactory(poolConfig);
|
||||
}
|
||||
private List<RedisNode> createSentinels(Sentinel sentinel) {
|
||||
List<RedisNode> nodes = new ArrayList<RedisNode>();
|
||||
for (String node : StringUtils.commaDelimitedListToStringArray(sentinel.getNodes())) {
|
||||
try {
|
||||
String[] parts = StringUtils.split(node, ":");
|
||||
Assert.state(parts.length == 2, "Must be defined as 'host:port'");
|
||||
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 JedisPoolConfig jedisPoolConfig() {
|
||||
JedisPoolConfig config = new JedisPoolConfig();
|
||||
RedisProperties.Pool props = this.properties.getPool();
|
||||
config.setMaxTotal(props.getMaxActive());
|
||||
config.setMaxIdle(props.getMaxIdle());
|
||||
config.setMinIdle(props.getMinIdle());
|
||||
config.setMaxWaitMillis(props.getMaxWait());
|
||||
return config;
|
||||
}
|
||||
private JedisConnectionFactory createJedisConnectionFactory() {
|
||||
JedisPoolConfig poolConfig = this.properties.getPool() != null ? jedisPoolConfig() : new JedisPoolConfig();
|
||||
|
||||
}
|
||||
if (getSentinelConfig() != null) {
|
||||
return new JedisConnectionFactory(getSentinelConfig(), poolConfig);
|
||||
}
|
||||
if (getClusterConfiguration() != null) {
|
||||
return new JedisConnectionFactory(getClusterConfiguration(), poolConfig);
|
||||
}
|
||||
return new JedisConnectionFactory(poolConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard Redis configuration.
|
||||
*/
|
||||
@Configuration
|
||||
protected static class RedisConfiguration {
|
||||
private JedisPoolConfig jedisPoolConfig() {
|
||||
JedisPoolConfig config = new JedisPoolConfig();
|
||||
RedisProperties.Pool props = this.properties.getPool();
|
||||
config.setMaxTotal(props.getMaxActive());
|
||||
config.setMaxIdle(props.getMaxIdle());
|
||||
config.setMinIdle(props.getMinIdle());
|
||||
config.setMaxWaitMillis(props.getMaxWait());
|
||||
return config;
|
||||
}
|
||||
|
||||
@Primary
|
||||
@Bean(BEAN_REDIS_TEMPLATE0)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
|
||||
public RedisTemplate<Object, Object> redisTemplate(
|
||||
@Qualifier(BEAN_REDIS_FACTORY0) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE0)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
|
||||
public StringRedisTemplate stringRedisTemplate(
|
||||
@Qualifier(BEAN_REDIS_FACTORY0) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
/**
|
||||
* Standard Redis configuration.
|
||||
*/
|
||||
@Configuration
|
||||
protected static class RedisConfiguration {
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE1)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db1")
|
||||
public RedisTemplate<Object, Object> redisTemplate1(
|
||||
@Qualifier(BEAN_REDIS_FACTORY1) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@Primary
|
||||
@Bean(BEAN_REDIS_TEMPLATE0)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
|
||||
public RedisTemplate<Object, Object> redisTemplate(
|
||||
@Qualifier(BEAN_REDIS_FACTORY0) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE1)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db1")
|
||||
public StringRedisTemplate stringRedisTemplate1(
|
||||
@Qualifier(BEAN_REDIS_FACTORY1) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE0)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db0", matchIfMissing = true)
|
||||
public StringRedisTemplate stringRedisTemplate(
|
||||
@Qualifier(BEAN_REDIS_FACTORY0) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE2)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db2")
|
||||
public RedisTemplate<Object, Object> redisTemplate2(
|
||||
@Qualifier(BEAN_REDIS_FACTORY2) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@Bean(BEAN_REDIS_TEMPLATE1)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db1")
|
||||
public RedisTemplate<Object, Object> redisTemplate1(
|
||||
@Qualifier(BEAN_REDIS_FACTORY1) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
|
||||
@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_STRING_TEMPLATE1)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db1")
|
||||
public StringRedisTemplate stringRedisTemplate1(
|
||||
@Qualifier(BEAN_REDIS_FACTORY1) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE3)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db3")
|
||||
public RedisTemplate<Object, Object> redisTemplate3(
|
||||
@Qualifier(BEAN_REDIS_FACTORY3) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@Bean(BEAN_REDIS_TEMPLATE2)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db2")
|
||||
public RedisTemplate<Object, Object> redisTemplate2(
|
||||
@Qualifier(BEAN_REDIS_FACTORY2) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE3)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db3")
|
||||
public StringRedisTemplate stringRedisTemplate3(
|
||||
@Qualifier(BEAN_REDIS_FACTORY3) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@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_TEMPLATE4)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db4")
|
||||
public RedisTemplate<Object, Object> redisTemplate4(
|
||||
@Qualifier(BEAN_REDIS_FACTORY4) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@Bean(BEAN_REDIS_TEMPLATE3)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db3")
|
||||
public RedisTemplate<Object, Object> redisTemplate3(
|
||||
@Qualifier(BEAN_REDIS_FACTORY3) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE4)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db4")
|
||||
public StringRedisTemplate stringRedisTemplate4(
|
||||
@Qualifier(BEAN_REDIS_FACTORY4) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE3)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db3")
|
||||
public StringRedisTemplate stringRedisTemplate3(
|
||||
@Qualifier(BEAN_REDIS_FACTORY3) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE5)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db5")
|
||||
public RedisTemplate<Object, Object> redisTemplate5(
|
||||
@Qualifier(BEAN_REDIS_FACTORY5) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@Bean(BEAN_REDIS_TEMPLATE4)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db4")
|
||||
public RedisTemplate<Object, Object> redisTemplate4(
|
||||
@Qualifier(BEAN_REDIS_FACTORY4) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE5)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db5")
|
||||
public StringRedisTemplate stringRedisTemplate5(
|
||||
@Qualifier(BEAN_REDIS_FACTORY5) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE4)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db4")
|
||||
public StringRedisTemplate stringRedisTemplate4(
|
||||
@Qualifier(BEAN_REDIS_FACTORY4) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE6)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db6")
|
||||
public RedisTemplate<Object, Object> redisTemplate6(
|
||||
@Qualifier(BEAN_REDIS_FACTORY6) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@Bean(BEAN_REDIS_TEMPLATE5)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db5")
|
||||
public RedisTemplate<Object, Object> redisTemplate5(
|
||||
@Qualifier(BEAN_REDIS_FACTORY5) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE6)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db6")
|
||||
public StringRedisTemplate stringRedisTemplate6(
|
||||
@Qualifier(BEAN_REDIS_FACTORY6) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@Bean(BEAN_REDIS_STRING_TEMPLATE5)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db5")
|
||||
public StringRedisTemplate stringRedisTemplate5(
|
||||
@Qualifier(BEAN_REDIS_FACTORY5) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
|
||||
@Bean(BEAN_REDIS_TEMPLATE7)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db7")
|
||||
public RedisTemplate<Object, Object> redisTemplate7(
|
||||
@Qualifier(BEAN_REDIS_FACTORY7) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createRedisTemplate(redisConnectionFactory);
|
||||
}
|
||||
@Bean(BEAN_REDIS_TEMPLATE6)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db6")
|
||||
public RedisTemplate<Object, Object> redisTemplate6(
|
||||
@Qualifier(BEAN_REDIS_FACTORY6) RedisConnectionFactory redisConnectionFactory)
|
||||
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_STRING_TEMPLATE6)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db6")
|
||||
public StringRedisTemplate stringRedisTemplate6(
|
||||
@Qualifier(BEAN_REDIS_FACTORY6) 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_TEMPLATE7)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db7")
|
||||
public RedisTemplate<Object, Object> redisTemplate7(
|
||||
@Qualifier(BEAN_REDIS_FACTORY7) 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_STRING_TEMPLATE7)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db7")
|
||||
public StringRedisTemplate stringRedisTemplate7(
|
||||
@Qualifier(BEAN_REDIS_FACTORY7) 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_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_TEMPLATE9)
|
||||
@ConditionalOnProperty(name = "yexuejc.redis.db9")
|
||||
public StringRedisTemplate stringRedisTemplate9(
|
||||
@Qualifier(BEAN_REDIS_FACTORY9) RedisConnectionFactory redisConnectionFactory)
|
||||
throws UnknownHostException {
|
||||
return createStringRedisTemplate(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);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
@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);
|
||||
}
|
||||
|
||||
private StringRedisTemplate createStringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
|
||||
StringRedisTemplate template = new StringRedisTemplate();
|
||||
template.setConnectionFactory(redisConnectionFactory);
|
||||
return template;
|
||||
}
|
||||
@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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,10 +9,16 @@ import org.springframework.context.annotation.Bean;
|
|||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* OSS相关配置
|
||||
* 阿里OSS相关配置
|
||||
*
|
||||
* @author maxf
|
||||
* @version 1.0
|
||||
* @ClassName OssAutoConfiguration
|
||||
* @Description
|
||||
* @date 2018/11/1 10:30
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnClass({ OSSClient.class })
|
||||
@ConditionalOnClass({OSSClient.class})
|
||||
@EnableConfigurationProperties(OssProperties.class)
|
||||
public class OssAutoConfiguration {
|
||||
|
||||
|
|
|
@ -9,6 +9,12 @@ import java.io.InputStream;
|
|||
|
||||
/**
|
||||
* 阿里云OSS服务MNS操作类
|
||||
*
|
||||
* @author maxf
|
||||
* @version 1.0
|
||||
* @ClassName OssFacade
|
||||
* @Description
|
||||
* @date 2018/11/1 10:30
|
||||
*/
|
||||
public class OssFacade {
|
||||
|
||||
|
|
|
@ -2,17 +2,34 @@ package com.yexuejc.springboot.base.autoconfigure;
|
|||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
@ConfigurationProperties(prefix = "yexuejc.oss")
|
||||
/**
|
||||
* 阿里OSS相关配置
|
||||
*
|
||||
* @author maxf
|
||||
* @version 1.0
|
||||
* @ClassName OssProperties
|
||||
* @Description
|
||||
* @date 2018/11/1 10:30
|
||||
*/
|
||||
@ConfigurationProperties(prefix = "yexuejc.alibaba.oss")
|
||||
public class OssProperties {
|
||||
|
||||
/** Endpoint 默认内网,外网需要自行配置:http://oss-cn-hangzhou.aliyuncs.com */
|
||||
private String endpoint = "oss-cn-hangzhou-internal.aliyuncs.com";
|
||||
/** 产品域名(固定) */
|
||||
private String accessKeyID = "LTAInCYwtsprAu8g";
|
||||
/** 区域ID(固定) */
|
||||
private String accessKeySecret = "6aqMtyFuJPUPChYpZSLsQ11cg4qby7";
|
||||
/** 默认bucket */
|
||||
private String bucket = "ecentm-res";
|
||||
/**
|
||||
* Endpoint 默认内网,外网需要自行配置:http://oss-cn-hangzhou.aliyuncs.com
|
||||
*/
|
||||
private String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
|
||||
/**
|
||||
* 产品域名(固定)
|
||||
*/
|
||||
private String accessKeyId = "xxxxx";
|
||||
/**
|
||||
* 区域ID(固定)
|
||||
*/
|
||||
private String accessKeySecret = "xxxxx";
|
||||
/**
|
||||
* 默认bucket
|
||||
*/
|
||||
private String bucket = "xxxxx";
|
||||
|
||||
public String getEndpoint() {
|
||||
return endpoint;
|
||||
|
@ -22,12 +39,12 @@ public class OssProperties {
|
|||
this.endpoint = endpoint;
|
||||
}
|
||||
|
||||
public String getAccessKeyID() {
|
||||
return accessKeyID;
|
||||
public String getAccessKeyId() {
|
||||
return accessKeyId;
|
||||
}
|
||||
|
||||
public void setAccessKeyID(String accessKeyID) {
|
||||
this.accessKeyID = accessKeyID;
|
||||
public void setAccessKeyId(String accessKeyId) {
|
||||
this.accessKeyId = accessKeyId;
|
||||
}
|
||||
|
||||
public String getAccessKeySecret() {
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
package com.yexuejc.springboot.base.exception;
|
||||
|
||||
public class ImageException extends RuntimeException {
|
||||
private static final long serialVersionUID = -2390195902982826130L;
|
||||
private String code = "E";
|
||||
|
||||
public ImageException() {
|
||||
super("图片异常");
|
||||
}
|
||||
|
||||
public ImageException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public ImageException(String msg, Throwable t) {
|
||||
super(msg, t);
|
||||
}
|
||||
|
||||
public ImageException(String code, String msg, Throwable t) {
|
||||
super(msg, t);
|
||||
this.code = code;
|
||||
}
|
||||
}
|
|
@ -3,5 +3,6 @@ com.yexuejc.springboot.base.autoconfigure.WebAutoConfiguration,\
|
|||
com.yexuejc.springboot.base.autoconfigure.OssAutoConfiguration,\
|
||||
com.yexuejc.springboot.base.autoconfigure.MutiRedisAutoConfiguration,\
|
||||
com.yexuejc.springboot.base.filter.ParamsRequestBodyAdvice,\
|
||||
com.yexuejc.springboot.base.filter.ParamsResponseBodyAdvice
|
||||
com.yexuejc.springboot.base.filter.ParamsResponseBodyAdvice,\
|
||||
com.yexuejc.springboot.base.autoconfigure.MnsAutoConfiguration
|
||||
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
package com.yexuejc.springboot.base.test;
|
||||
|
||||
import com.aliyun.mns.model.Message;
|
||||
import com.yexuejc.base.util.JsonUtil;
|
||||
import com.yexuejc.base.util.StrUtil;
|
||||
import com.yexuejc.springboot.base.autoconfigure.MnsFacade;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author maxf
|
||||
* @version 1.0
|
||||
* @ClassName MnsTest
|
||||
* @Description
|
||||
* @date 2018/11/1 14:25
|
||||
*/
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class MnsTest {
|
||||
|
||||
@Autowired
|
||||
MnsFacade mnsFacade;
|
||||
|
||||
/**
|
||||
* 发送MNS
|
||||
*/
|
||||
@Test
|
||||
public void sendMms() {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("id", StrUtil.genUUID());
|
||||
map.put("type", "shop");
|
||||
mnsFacade.sendMsg("SHOP", JsonUtil.obj2Json(map), 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 取出消息->删除消息
|
||||
*/
|
||||
public void get() {
|
||||
Message msg = mnsFacade.popMsg("SHOP");
|
||||
if (msg == null) {
|
||||
System.out.println("取出空消息");
|
||||
}
|
||||
if (msg.getMessageBody() == null) {
|
||||
System.out.println("取出消息无内容");
|
||||
//删除
|
||||
mnsFacade.deleteMsg("SHOP", msg);
|
||||
}
|
||||
Map<String, Object> map = JsonUtil.json2Obj(msg.getMessageBody(), Map.class);
|
||||
System.out.println(String.format("取出消息:%s", JsonUtil.obj2Json(map)));
|
||||
//操作完成后删除消息
|
||||
}
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
package com.yexuejc.springboot.base.test;
|
||||
|
||||
import com.aliyun.oss.model.PutObjectResult;
|
||||
import com.yexuejc.base.util.ImgUtil;
|
||||
import com.yexuejc.base.util.StrUtil;
|
||||
import com.yexuejc.springboot.base.autoconfigure.OssFacade;
|
||||
import com.yexuejc.springboot.base.exception.ImageException;
|
||||
import com.yexuejc.springboot.base.util.LogUtil;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* @author maxf
|
||||
* @version 1.0
|
||||
* @ClassName OssTest
|
||||
* @Description
|
||||
* @date 2018/11/1 14:58
|
||||
*/
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class OssTest {
|
||||
@Autowired
|
||||
OssFacade ossFacade;
|
||||
|
||||
/**
|
||||
* 上传图片到oss
|
||||
* <p>
|
||||
* 这里是模拟微信登录时,获取到微信头像地址,缓存到base64,然后上传到OSS
|
||||
* </p>
|
||||
*/
|
||||
@Test
|
||||
public void put(){
|
||||
putOss4Head(null, "https://avatar.csdn.net/7/8/1/3_wulex.jpg");
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传网络头像至OSS
|
||||
*
|
||||
* @param url 网络图片地址
|
||||
* @return String 本OSS地址
|
||||
*/
|
||||
public String putOss4Head(String name, String url) throws ImageException {
|
||||
if (StrUtil.isEmpty(name)) {
|
||||
name = StrUtil.genUUID();
|
||||
}
|
||||
if (name.indexOf(".") == 0) {
|
||||
throw new ImageException("图片名称第一个字符不能为.");
|
||||
}
|
||||
name = "head/" + name;
|
||||
try {
|
||||
LogUtil.bizLogger.info("[第三方登录/注册]上传头像开始:{}", url);
|
||||
InputStream is = ImgUtil.getImageInputStreamFromUrl(url);
|
||||
byte[] b = ImgUtil.getByteArray(is);
|
||||
ImgUtil.ImageInfo imageInfo = ImgUtil.getImageInfoFromInputStream(b);
|
||||
if (name.indexOf(".") < 0) {
|
||||
name = name + "." + imageInfo.getType();
|
||||
}
|
||||
PutObjectResult head = ossFacade.putObject(name, new ByteArrayInputStream(b));
|
||||
} catch (IOException e) {
|
||||
LogUtil.bizLogger.error("[第三方登录/注册]读取网络头像为IO异常:{}", url);
|
||||
e.printStackTrace();
|
||||
throw new ImageException("[第三方登录/注册]读取网络头像为IO异常:" + e.getMessage());
|
||||
}
|
||||
LogUtil.bizLogger.info("[[第三方登录/注册]上传头像结束:{}", url);
|
||||
return name;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,108 @@
|
|||
package com.yexuejc.springboot.base.test;
|
||||
|
||||
import com.yexuejc.base.util.JsonUtil;
|
||||
import com.yexuejc.base.util.StrUtil;
|
||||
import com.yexuejc.springboot.base.autoconfigure.MutiRedisAutoConfiguration;
|
||||
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.SpringRunner;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* redis 操作
|
||||
*
|
||||
* @author maxf
|
||||
* @version 1.0
|
||||
* @ClassName RedisTest
|
||||
* @Description
|
||||
* @date 2018/11/1 11:16
|
||||
*/
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class RedisTest {
|
||||
/**
|
||||
* 指向redis 0库
|
||||
*/
|
||||
@Autowired
|
||||
@Qualifier(MutiRedisAutoConfiguration.BEAN_REDIS_TEMPLATE0)
|
||||
private RedisTemplate<Object, Object> redisTemplate0;
|
||||
|
||||
/**
|
||||
* 保存用户登录信息
|
||||
* name:张三
|
||||
*/
|
||||
@Test
|
||||
public void save() {
|
||||
redisTemplate0.afterPropertiesSet();
|
||||
redisTemplate0.opsForHash().put("login.user.userId1", "name", "张三");
|
||||
redisTemplate0.expire("login.user.userId1", 10, TimeUnit.MINUTES);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存用户登录信息
|
||||
* name:张三
|
||||
* sex:男
|
||||
*/
|
||||
@Test
|
||||
public void save2() {
|
||||
redisTemplate0.afterPropertiesSet();
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("name", "张三");
|
||||
map.put("sex", "男");
|
||||
redisTemplate0.opsForHash().putAll("login.user.userId1", map);
|
||||
redisTemplate0.expire("login.user.userId1", 10, TimeUnit.MINUTES);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存授权zhangsan的token,过期时间10分钟
|
||||
*/
|
||||
@Test
|
||||
public void accessToken() {
|
||||
redisTemplate0.afterPropertiesSet();
|
||||
redisTemplate0.opsForValue().append("zhangsan.access_token", StrUtil.genUUID());
|
||||
redisTemplate0.expire("zhangsan.access_token", 10, TimeUnit.MINUTES);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取用户登录信息
|
||||
* name:张三
|
||||
*/
|
||||
@Test
|
||||
public void get() {
|
||||
redisTemplate0.afterPropertiesSet();
|
||||
String name = (String) redisTemplate0.opsForHash().get("login.user.userId1", "name");
|
||||
System.out.println(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户登录信息
|
||||
* name:张三->李四
|
||||
* age:20
|
||||
*/
|
||||
@Test
|
||||
public void put() {
|
||||
redisTemplate0.afterPropertiesSet();
|
||||
redisTemplate0.opsForHash().put("login.user.userId1", "name", "张三");
|
||||
redisTemplate0.opsForHash().put("login.user.userId1", "age", "20");
|
||||
Map<String, Object> map = (Map) redisTemplate0.opsForHash().entries("login.user.userId1");
|
||||
System.out.println(JsonUtil.obj2Json(map));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
@Test
|
||||
public void del() {
|
||||
redisTemplate0.afterPropertiesSet();
|
||||
redisTemplate0.delete("login.user.userId1");
|
||||
}
|
||||
|
||||
}
|
|
@ -27,4 +27,22 @@ spring.http.encoding.enabled=true
|
|||
server.tomcat.uri-encoding=UTF-8
|
||||
|
||||
#是否开启HTTPS(SSL)请求证书验证忽略:默认false
|
||||
yexuejc.enable.ssl-ignore=true
|
||||
yexuejc.enable.ssl-ignore=true
|
||||
|
||||
#reids
|
||||
spring.redis.host=121.42.165.89
|
||||
spring.redis.password=
|
||||
spring.redis.port=16379
|
||||
|
||||
|
||||
#mns
|
||||
yexuejc.alibaba.mns.access-key-id=
|
||||
yexuejc.alibaba.mns.access-key-secret=
|
||||
yexuejc.alibaba.mns.endpoint=http://1734411100610331.mns.cn-hangzhou.aliyuncs.com/
|
||||
yexuejc.alibaba.mns.queue-name-prefix=IVT-CONSUMER
|
||||
|
||||
#OSS
|
||||
yexuejc.alibaba.oss.endpoint=oss-cn-beijing.aliyuncs.com
|
||||
yexuejc.alibaba.oss.access-key-secret=
|
||||
yexuejc.alibaba.oss.access-key-id=
|
||||
yexuejc.alibaba.oss.bucket=guansichou
|
||||
|
|
Loading…
Reference in New Issue