SpringCloud 项目搭建

1. 技术选型

springcloud管理的微服务架构众多,为了不用在项目后期解决环境冲突问题,请严格按照官网给出的 boot 与cloud 对应关系进行选型。
SpringCloud官网地址

    1. 版本对应图:根据自己的需求 选择对应的版本(参考对应的文档 Reference Doc.)
      在这里插入图片描述

2. 项目创建

  • 2.1 创建父项目
    • 2.1.1 创建maven 项目删除 src 文件夹, 只保留POM 文件
      在这里插入图片描述
    • 2.1.2 修改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版权协议,转载请附上原文出处链接和本声明。