【尚庭公寓|项目开发】第二天

摘要:

        本文主要介绍了如何配置尚庭公寓的大体架构。首先,通过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);
    }
}

关于名为“尚庭公寓”的应用或系统的源代码,目前没有公开的、权威的信息可以直接指向一个确切的开源项目或代码库[^1]。该名称可能是某个企业内部开发的定制化管理系统,或者是用于教学、演示目的的示例项目。 如果“尚庭公寓”是基于特定技术栈开发的应用系统,例如使用了Spring Boot框架进行后端开发[^2],那么可以推测其源代码可能包含以下结构: - **模块划分**:通常会有多个模块,如`apartment-service`(公寓服务)、`user-service`(用户管理)、`order-service`(订单处理)等。 - **依赖管理**:可能会引入Spring Boot Starter相关的依赖,如`spring-boot-starter-web`、`spring-boot-starter-data-jpa`以及`spring-boot-starter-data-redis`来支持Web功能、数据库访问和缓存操作。 - **配置文件**:在`application.yml`或`application.properties`中定义数据库连接、Redis配置、日志设置等。 - **核心类与接口**:包括控制器(Controller)、服务层(Service)、数据访问层(Repository)以及实体类(Entity)等。 若希望获取类似系统的源码,建议采取以下几种方式: 1. **GitHub/Gitee搜索**:尝试在GitHub或Gitee上搜索关键词“尚庭公寓”,并结合语言、星标数等过滤条件缩小范围。 2. **联系开发者**:如果有具体的团队或公司负责此项目,可直接联系相关方询问是否提供源码访问权限。 3. **学习资料**:查找是否有配套的教学视频、文档或书籍提及该系统,并从中获得源码链接或下载方式。 ### 示例 Spring Boot 项目结构 ```java // 示例:主启动类 @SpringBootApplication public class ShangTingApartmentApplication { public static void main(String[] args) { SpringApplication.run(ShangTingApartmentApplication.class, args); } } // 示例:控制器类 @RestController @RequestMapping("/api/apartments") public class ApartmentController { @Autowired private ApartmentService apartmentService; @GetMapping public List<Apartment> getAllApartments() { return apartmentService.findAll(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值