前几天又从头开始创建了一个多模块的分布式的项目,过程中还是有不少问题的,这里做一些小结:
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方式导入
代码语言:javascript复制 <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成员变量时,数据格式对齐需要设置:
代码语言:javascript复制 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,可以如下配置暂且关闭自动注入:
代码语言:javascript复制 @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>
代码语言:javascript复制 @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