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