分布式项目搭建的一些小结

前往原站点查看

2022-12-17 14:13:27

    前几天又从头开始创建了一个多模块的分布式的项目,过程中还是有不少问题的,这里做一些小结:

1.配置注入,下面二选一。
  为了有提示等,引入spring-boot-configuration-processor
    ① @EnableConfigurationProperties + @ConfigurationProperties
        不需要注册,使用enable开启注册
    ② @Componet + @ConfigurationProperties
        直接加入容器
2.扫描mapper接口并且实现,下面二选一
    ① @Mapper
        每一个接口都加该注解
    ② @MapperScan
        只要主类加上这个接口
3.多模块的工程,如果maven出现导入错误,可能是循环依赖的原因。
 这时,我们需要给父工程install一下,可能就自动好了。
4.多模块项目创建父工程引入springboot依赖的两种方式

    ① <parent> 设置spring-boot-starter-parent

    ② <dependencyManagement>配置dependencies以pom方式导入

       <dependencyManagement>
        	<dependencies>
         	   <dependency>
         	       <groupId>org.springframework.boot</groupId>
         	       <artifactId>spring-boot-dependencies</artifactId>
                	<version>2.7.2</version>
    	           <type>pom</type>
    	            <scope>import</scope>
   	         </dependency>
   	     </dependencies>
   	   </dependencyManagement>

5.要能够使用web模块,需要引入spring-boot-starter-web
 要能够使用mysql模块,大致需要:
 druid-spring-boot-starter/mysql-connector-java/mybatis-spring-boot-starter
6.yml方式配置数据库密码时,如果密码以0开头,密码要加引号
7.com.sql.Date或者Time或者TimeStamp格式作为pojo成员变量时,数据格式对齐需要设置:

  spring:
    jackson:
      date-format: yyyy-MM-dd HH:mm:ss,
      time-zone: GMT+8 # 如果设置,timestamp会有时差计算

8.mybatisplus,可以替换掉mybatis依赖,引入了mybatis依赖无需再引入mybatis。

    如果字段是自增主键,pojo需要注解:@TableId(type = IdType.AUTO)
     如果使用mybatisplus,需要mapper接口继承BaseMapper<POJOTYPE>接口。

9.springboot带数据库相关依赖时,启动时候要datasource的url,可以如下配置暂且关闭自动注入:

        @SpringBootApplication(
	exclude ={
		DataSourceAutoConfiguration.class, 
		HibernateJpaAutoConfiguration.class
		}
	)

10.springboot和springcloud大版本一定要统一,否则解析不出来!!!
  启动前需要先进行基本的配置,否则报错。
  eureka模块中包含了web模块,使用网飞的依赖spring-cloud-starter-netflix-eureka-server
11.如果发现配置都正确,结果eureka管理页面还是打不开,可能是idea的问题,重启idea可能发现就好了。
12.使用openfeign进行服务调用时,原service设置了日期dateFormat,调用侧也要设置日期样式,并且RetResult需要有默认的构造器
13.redis从节点只有读的权限。redis选择指定数据库select <index>

   @Bean
    public RedisTemplate<String, Serializable> getRedisTemplate(LettuceConnectionFactory connectionFactory){
        RedisTemplate<String, Serializable> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }

14.util日期格式注解
  @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
  private Date time;
15.mongodbd的id类型是ObjectId, 书写的时候可以用String,但绝不是int。


❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀

欸嘿,加个博客同步声明的博文链接:

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=34w7b77jjxyc8


上一篇:Springboot的jar包分离
下一篇:浏览量的简单设计