Skip to content

Commit 8771856

Browse files
author
Zeemann Lin
committed
feat: add redis config
redis serialization: Jackson2JsonRedisSerializer maven 打包只需要执行父类的package即可。
1 parent d462950 commit 8771856

File tree

26 files changed

+290
-128
lines changed

26 files changed

+290
-128
lines changed

activity/pom.xml

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
</parent>
1111

1212
<artifactId>activity</artifactId>
13+
<packaging>jar</packaging>
1314

1415
<properties>
1516
<maven.compiler.source>17</maven.compiler.source>
@@ -21,7 +22,7 @@
2122

2223
<dependency>
2324
<groupId>com.example</groupId>
24-
<artifactId>core</artifactId>
25+
<artifactId>common-core</artifactId>
2526
<version>0.0.1-SNAPSHOT</version>
2627
</dependency>
2728

@@ -44,6 +45,27 @@
4445
<groupId>mysql</groupId>
4546
<artifactId>mysql-connector-java</artifactId>
4647
</dependency>
48+
4749
</dependencies>
4850

51+
<build>
52+
<plugins>
53+
<plugin>
54+
<groupId>org.springframework.boot</groupId>
55+
<artifactId>spring-boot-maven-plugin</artifactId>
56+
<configuration>
57+
<mainClass>com.example.activity.ActivityApplication</mainClass>
58+
</configuration>
59+
<executions>
60+
<execution>
61+
<goals>
62+
<goal>repackage</goal>
63+
</goals>
64+
</execution>
65+
</executions>
66+
</plugin>
67+
</plugins>
68+
</build>
69+
70+
4971
</project>

activity/src/main/java/com/example/activity/ActivityApplication.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55

6-
@SpringBootApplication(scanBasePackages = {"com.example.common",
7-
"com.example.activity"})
6+
@SpringBootApplication
87
public class ActivityApplication {
98

109
public static void main(String[] args) {

activity/src/main/java/com/example/activity/controller/ProviderController.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import com.example.activity.service.EmailService;
88
import com.example.common.core.response.ResponseResult;
99
import com.example.common.core.response.code.ErrorCode;
10+
import com.example.common.core.utils.RedisUtil;
1011
import lombok.RequiredArgsConstructor;
1112
import lombok.extern.slf4j.Slf4j;
12-
import org.springframework.beans.factory.annotation.Value;
1313
import org.springframework.web.bind.annotation.RestController;
1414

1515
import java.util.HashMap;
@@ -23,6 +23,8 @@ public class ProviderController implements ProviderApi {
2323

2424
private final EmailService emailService;
2525

26+
private final RedisUtil redisUtil;
27+
2628

2729
@Override
2830
public ResponseResult sendEmail(String emailAddress) {
@@ -37,6 +39,7 @@ public ResponseResult provider(){
3739
hashmap.put("3", ResponseResult.failed().isSuccess());
3840
hashmap.put("4", ResponseResult.failed("message").isSuccess());
3941
hashmap.put("5", ResponseResult.failed(ErrorCode.FORBIDDEN).isSuccess());
42+
redisUtil.set("1","2",30);
4043
return ResponseResult.success(hashmap);
4144
}
4245

activity/src/test/java/com/example/activity/ActivityApplicationTests.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

auth/auth_client/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
</parent>
1111

1212
<artifactId>auth_client</artifactId>
13+
<packaging>jar</packaging>
1314

1415
<properties>
1516
<maven.compiler.source>17</maven.compiler.source>

auth/auth_server/pom.xml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
</parent>
1111

1212
<artifactId>auth_server</artifactId>
13+
<packaging>jar</packaging>
1314

1415
<properties>
1516
<maven.compiler.source>17</maven.compiler.source>
@@ -20,15 +21,10 @@
2021
<dependencies>
2122
<dependency>
2223
<groupId>com.example</groupId>
23-
<artifactId>core</artifactId>
24+
<artifactId>common-core</artifactId>
2425
<version>0.0.1-SNAPSHOT</version>
2526
</dependency>
2627

27-
<dependency>
28-
<groupId>com.example</groupId>
29-
<artifactId>redis</artifactId>
30-
<version>0.0.1-SNAPSHOT</version>
31-
</dependency>
3228

3329

3430
<dependency>

common/core/pom.xml renamed to common/common-core/pom.xml

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
<version>0.0.1-SNAPSHOT</version>
1010
</parent>
1111

12-
<artifactId>core</artifactId>
12+
<artifactId>common-core</artifactId>
13+
<version>0.0.1-SNAPSHOT</version>
14+
<packaging>jar</packaging>
1315

1416
<properties>
1517
<maven.compiler.source>17</maven.compiler.source>
@@ -22,7 +24,18 @@
2224
<groupId>com.fasterxml.jackson.core</groupId>
2325
<artifactId>jackson-databind</artifactId>
2426
</dependency>
25-
27+
<dependency>
28+
<groupId>org.springframework.boot</groupId>
29+
<artifactId>spring-boot-starter-data-redis</artifactId>
30+
</dependency>
31+
<dependency>
32+
<groupId>org.redisson</groupId>
33+
<artifactId>redisson</artifactId>
34+
</dependency>
35+
<dependency>
36+
<groupId>com.fasterxml.jackson.datatype</groupId>
37+
<artifactId>jackson-datatype-jsr310</artifactId>
38+
</dependency>
2639
<dependency>
2740
<groupId>com.alibaba.cloud</groupId>
2841
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
@@ -37,7 +50,10 @@
3750
<groupId>org.springframework.cloud</groupId>
3851
<artifactId>spring-cloud-starter-bootstrap</artifactId>
3952
</dependency>
40-
53+
<dependency>
54+
<groupId>org.springframework.boot</groupId>
55+
<artifactId>spring-boot-autoconfigure</artifactId>
56+
</dependency>
4157
<dependency>
4258
<groupId>org.springframework.boot</groupId>
4359
<artifactId>spring-boot-starter-web</artifactId>

common/redis/src/main/java/com/example/common/redis/config/CustomJsonJacksonCodec.java renamed to common/common-core/src/main/java/com/example/common/core/config/CustomJsonJacksonCodec.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.common.redis.config;
1+
package com.example.common.core.config;
22

33
import com.fasterxml.jackson.annotation.JsonAutoDetect;
44
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -7,10 +7,7 @@
77
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
88
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
99
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
10-
import io.netty.buffer.ByteBuf;
11-
import io.netty.buffer.ByteBufAllocator;
12-
import io.netty.buffer.ByteBufInputStream;
13-
import io.netty.buffer.ByteBufOutputStream;
10+
import io.netty.buffer.*;
1411
import org.redisson.client.codec.BaseCodec;
1512
import org.redisson.client.protocol.Decoder;
1613
import org.redisson.client.protocol.Encoder;
@@ -19,6 +16,7 @@
1916
import java.io.InputStream;
2017
import java.io.OutputStream;
2118

19+
2220
public class CustomJsonJacksonCodec extends BaseCodec {
2321
public static final CustomJsonJacksonCodec INSTANCE = new CustomJsonJacksonCodec();
2422

@@ -67,4 +65,4 @@ public static ObjectMapper getObjectMapper() {
6765
return objectMapper;
6866
}
6967

70-
}
68+
}

common/redis/src/main/java/com/example/common/redis/config/RedisAutoConfig.java renamed to common/common-core/src/main/java/com/example/common/core/config/RedisAutoConfiguration.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
1-
package com.example.common.redis.config;
1+
package com.example.common.core.config;
22

3+
import com.example.common.core.utils.RedisKeyUtil;
4+
import com.example.common.core.utils.RedisUtil;
35
import com.fasterxml.jackson.databind.ObjectMapper;
46
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
58
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
69
import org.springframework.context.annotation.Bean;
710
import org.springframework.context.annotation.Configuration;
11+
import org.springframework.context.annotation.Import;
812
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
913
import org.springframework.data.redis.core.RedisTemplate;
1014
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
1115
import org.springframework.data.redis.serializer.StringRedisSerializer;
16+
1217
/**
1318
* Redis配置
1419
*/
1520
@Configuration
16-
public class RedisAutoConfig {
21+
@AutoConfigureAfter({RedisSessionAutoConfiguration.class})
22+
@Import({RedisUtil.class, RedisKeyUtil.class})
23+
public class RedisAutoConfiguration {
1724

1825
/**
1926
* 自定义RedisTemplate
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package com.example.common.core.config;
2+
3+
import com.example.common.core.utils.RedisKeyUtil;
4+
import org.redisson.Redisson;
5+
import org.redisson.api.RBloomFilter;
6+
import org.redisson.api.RedissonClient;
7+
import org.redisson.client.codec.Codec;
8+
import org.redisson.config.Config;
9+
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
10+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
11+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
12+
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
13+
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
14+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
15+
import org.springframework.context.annotation.Bean;
16+
import java.time.Duration;
17+
import java.util.ArrayList;
18+
import java.util.List;
19+
20+
21+
@ConditionalOnClass(Redisson.class)
22+
@AutoConfigureBefore({RedisAutoConfiguration.class})
23+
@EnableConfigurationProperties(RedisProperties.class)
24+
public class RedisSessionAutoConfiguration {
25+
26+
private static final String REDIS_PROTOCOL_PREFIX = "redis://";
27+
28+
private static final String REDISS_PROTOCOL_PREFIX = "rediss://";
29+
30+
@Bean
31+
public RBloomFilter<String> bloomFilter(RedissonClient redisson) {
32+
RBloomFilter<String> bloomFilter = redisson.getBloomFilter(RedisKeyUtil.getBloomFilterKey());
33+
bloomFilter.tryInit(10000,0.01);
34+
return bloomFilter;
35+
}
36+
37+
/**
38+
* redisson配置
39+
* @param properties redis配置文件
40+
* @return
41+
*/
42+
@Bean(destroyMethod = "shutdown")
43+
@ConditionalOnMissingBean(RedissonClient.class)
44+
public RedissonClient redisClient(RedisProperties properties) {
45+
Config config;
46+
final Duration duration = properties.getTimeout();
47+
int timeout = duration == null ? 0 : (int) duration.toMillis();
48+
if (properties.getSentinel() != null) {
49+
config = new Config();
50+
config.useSentinelServers()
51+
.setMasterName(properties.getSentinel().getMaster())
52+
.addSentinelAddress(convertNodes(properties.isSsl(),properties.getSentinel().getNodes()))
53+
.setDatabase(properties.getDatabase())
54+
.setConnectTimeout(timeout)
55+
.setPassword(properties.getPassword());
56+
} else if (properties.getCluster() != null) {
57+
config = new Config();
58+
config.useClusterServers()
59+
.addNodeAddress(convertNodes(properties.isSsl(),properties.getCluster().getNodes()))
60+
.setPassword(properties.getPassword())
61+
.setTimeout(timeout);
62+
} else {
63+
config = new Config();
64+
config.useSingleServer()
65+
.setAddress(convertAddress(properties.isSsl(),properties.getHost() ,properties.getPort()))
66+
.setDatabase(properties.getDatabase())
67+
.setPassword(properties.getPassword())
68+
.setTimeout(timeout);
69+
}
70+
// 使用json序列化方式
71+
Codec codec = CustomJsonJacksonCodec.INSTANCE;
72+
config.setCodec(codec);
73+
return Redisson.create(config);
74+
}
75+
76+
private String getProtocolPrefix(boolean isSsl) {
77+
return isSsl ? REDISS_PROTOCOL_PREFIX : REDIS_PROTOCOL_PREFIX;
78+
}
79+
80+
private String convertAddress(boolean isSsl,String host,int port) {
81+
return getProtocolPrefix(isSsl) + host + ":" + port;
82+
}
83+
84+
private String[] convertNodes(boolean isSsl,List<String> nodeList) {
85+
List<String> nodes = new ArrayList<>(nodeList.size());
86+
for (String node : nodeList) {
87+
if (node.startsWith(REDISS_PROTOCOL_PREFIX) || node.startsWith(REDIS_PROTOCOL_PREFIX)) {
88+
nodes.add(node);
89+
} else {
90+
nodes.add(getProtocolPrefix(isSsl) + node);
91+
}
92+
}
93+
return nodes.toArray(new String[0]);
94+
}
95+
96+
}

0 commit comments

Comments
 (0)