摘要:
本文主要介绍了如何配置尚庭公寓的大体架构。首先,通过application.yaml
文件配置了服务器端口、数据库连接(使用Hikari连接池)、Redis和Minio对象存储等。接着,在common
模块中编写了配置类,包括Redis配置、MyBatis分页插件和字段自动填充、以及Minio配置类的实现。此外,还导入了model
模块的枚举类和实体类,并配置了Lombok。最后,在web-admin
模块中导入了控制器、映射器等框架组件,并编写了启动类AdminWebApplication
,确保应用能够正确启动并扫描相关包路径。这些步骤为构建一个完整的Spring Boot应用提供了基础配置和实现细节。
一,完善aplication.yaml文件
端口8081/8082,数据库(hikari),redis以及对象存储minio等配置
server: port: 8082 spring: datasource: type: com.zaxxer.hikari.HikariDataSource url: jdbc:mysql://192.168.xxx.xxx:3306/lease?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8 username: xxx password: xxxxx hikari: connection-test-query: SELECT 1 # 自动检测连接 connection-timeout: 60000 #数据库连接超时时间,默认30秒 idle-timeout: 500000 #空闲连接存活最大时间,默认600000(10分钟) max-lifetime: 540000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期 maximum-pool-size: 12 #连接池最大连接数,默认是10 minimum-idle: 10 #最小空闲连接数量 pool-name: SPHHikariPool # 连接池名称 jackson: date-format: yyyy-MM-dd HH:mm:ss #日期格式 time-zone: GMT+8 #时区,东2i八区 data: redis: host: 192.168.xxx.xxx port: 6379 password: xxx database: 0 #用于打印框架生成的sql语句,便于调试 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl minio: endpoint: http://192.168.xxx.xxx:9000 accessKey: xxxx secretKey: xxxx bucketName: lease springdoc: default-flat-param-object: true #开启测试文档查询条件分类显示
二,common模块编写对应的配置类(RedisConfiguration,mybatisconfig.......)
1,redis及静态常量类
@Configuration
public class RedisConfiguration {
@Bean
public RedisTemplate<String, Object> stringObjectRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
// 设置key的序列化方式
template.setKeySerializer(RedisSerializer.string());
// 设置value的序列化方式
template.setValueSerializer(RedisSerializer.java());
return template;
}
}
public class RedisConstant {
public static final String ADMIN_LOGIN_PREFIX = "admin:login:";
public static final Integer ADMIN_LOGIN_CAPTCHA_TTL_SEC = 60;
public static final String APP_LOGIN_PREFIX = "app:login:";
public static final Integer APP_LOGIN_CODE_RESEND_TIME_SEC = 60;
public static final Integer APP_LOGIN_CODE_TTL_SEC = 60 * 10;
public static final String APP_ROOM_PREFIX = "app:room:";
}
2,mybatis(分页插件注册及字段自动填充)
@Configuration
public class MybatisConfig{
//注册分页查询的组件到IOC容器,纯模板
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
@Component
public class MybatisMetaObjectHandler implements MetaObjectHandler {
// 在插入数据时,自动填充createTime字段
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
}
// 在更新数据时,自动填充updateTime字段
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
}
}
3,minio(yaml读取类及注册配置类)
@Data
@ConfigurationProperties(prefix = "minio")
public class MinioProperties {
private String endpoint;
private String accessKey;
private String secretKey;
private String bucketName;
}
@Configuration
//表示生效条件,模块yaml文件有minio配置才会生效
@ConditionalOnProperty(name = "minio.endpoint")
//第二种注册方式,直接扫描包下的要注册的类
@ConfigurationPropertiesScan(basePackages = "com.atguigu.lease.common.minio")
public class MinioConfiguration {
@Autowired
private MinioProperties minio;
@Bean
public MinioClient minioClient(){
return MinioClient.builder().endpoint(minio.getEndpoint())
.credentials(minio.getAccessKey(), minio.getSecretKey()).build();
}
}
三,导入model模块的各种枚举类和实体类
同时,在model模块的Java目录下新建一个lombok.config配置文件,为了后期打包需要,填入下列字段:
config.stopBubbling=true lombok.equalsAndHashCode.callSuper=call
四,导入web-admin模块的框架,如:controller,mapper等
编写启动类AdminWebApplication,并且加上包扫描器@MapperScan("mapper层所在全路径")
@SpringBootApplication
@MapperScan("com.atguigu.lease.web.admin.mapper")
public class AdminWebApplication {
public static void main(String[] args) {
SpringApplication.run(AdminWebApplication.class, args);
}
}