1. 技术选型
springcloud管理的微服务架构众多,为了不用在项目后期解决环境冲突问题,请严格按照官网给出的 boot 与cloud 对应关系进行选型。
SpringCloud官网地址
- 版本对应图:根据自己的需求 选择对应的版本(参考对应的文档 Reference Doc.)

- 版本对应图:根据自己的需求 选择对应的版本(参考对应的文档 Reference Doc.)
2. 项目创建
- 2.1 创建父项目
- 2.1.1 创建maven 项目删除 src 文件夹, 只保留POM 文件

- 2.1.2 修改Pom 文件
- 2.1.1 创建maven 项目删除 src 文件夹, 只保留POM 文件
# 1. 打包类型标签
- <packaging>pom</packaging>
dependencyManagement 只声明依赖,并不实现引入,所以子项目还需要写要引入的依赖。如果不在子项目中声明依赖,是不会从服项目中继承下来的,且子项目中不明确版本号才会从父工程继承(version和scope)。后面如果需要添加需要管理的依赖,则分别在dependencyManagement标签和properties标签中补充即可。
好处: 父工程中版本号 一处修改,所有子模块都生效,统一管理。
<groupId>com.xiaoming</groupId>
<artifactId>spring-cloud-xiaomingwang</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.cloud-version>2020.0.3</spring.cloud-version>
<spring.boot-version>2.4.6</spring.boot-version>
</properties>
<!--dependencyManagement 是只管理版本,不引入依赖
版本号写在 properties 标签中
子module不用写 groupId 和 version
-->
<dependencyManagement>
<!--spring boot 版本控制 2.4.6-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud 版本管理 2020.0.3 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
springcloud 依赖拉不下来使用指令
mvn -U idea:idea
redis 缓存配置 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- redis 连接池 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
配置:
@Configuration
public class RedisConfig {
/**
* 重新redis序列号
*
* @param redisConnectionFactory
* @return
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
// 为String 类型的key 设置序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
// 为String 类型的value 设置序列化器
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
// 为hash 类型的key 设置序列化器
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
// 为hash 类型的 value 设置序列化器
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
/**
* 重写cache 序列化
*
* @param redisTemplate
* @return
*/
@Bean
public RedisCacheManager redisCacheManager(RedisTemplate redisTemplate) {
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisTemplate.getConnectionFactory());
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
// 设置默认过期时间
.entryTtl(Duration.ofMinutes(30))
// 设置key value 序列化
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getKeySerializer()))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getValueSerializer()));
return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
}
}
版权声明:本文为qq_16183731原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。