学习: 尚硅谷Java项目之尚庭公寓(4)

五、移动端前后端联调

前端服务

后端服务

全部删除,重新上传

minio要开

Cannot read properties of undefined (reading 'Map')

在rentHouseH5中src\config\config.ts改高德地图 key

查找

地区筛选

价格筛选

排序

个人中心

浏览历史

浏览历史图片加载失败

后端返回的图片 URL 是完整的绝对路径:http://113.141.166.99:9000/lease/...

我的预约

我的租约

确认

六、项目优化

使用 Reids 保存缓存数据

common/src/main/java/org/example/lease/common/redis/RedisConfiguration.java

java 复制代码
package org.example.lease.common.redis;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;

@Configuration
public class RedisConfiguration {
    @Bean
    public RedisTemplate<String, Object> stringObjectRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
        template.setKeySerializer(RedisSerializer.string());
        template.setValueSerializer(RedisSerializer.java());
        return template;
    }
}

编写缓存逻辑

web-app

web/web-app/src/main/java/org/example/lease/web/app/service/impl/RoomInfoServiceImpl.java

java 复制代码
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

getDetailById方法下

java 复制代码
 public RoomDetailVo getDetailById(Long id) {
        String key = RedisConstant.APP_ROOM_PREFIX + id;
        RoomDetailVo roomDetailVo = (RoomDetailVo) redisTemplate.opsForValue().get(key);
        //1.查询房间信息
        RoomInfo roomInfo = roomInfoMapper.selectById(id);
          if (roomDetailVo == null) {
            //1.查询房间信息
            RoomInfo roomInfo = roomInfoMapper.selectById(id);
            if (roomInfo == null) {
                return null;
            }
               roomDetailVo = new RoomDetailVo();
        ......

        redisTemplate.opsForValue().set(key, roomDetailVo);
    }

编写删除缓存逻辑

web-admin

web/web-admin/src/main/java/org/example/lease/web/admin/service/impl/RoomInfoServiceImpl.java

java 复制代码
@Autowired
private RedisTemplate redisTemplate;

saveOrUpdateRoom方法

java 复制代码
@Override
public void saveOrUpdateRoom(RoomSubmitVo roomSubmitVo) {
    boolean isUpdate = roomSubmitVo.getId() != null;
    super.saveOrUpdate(roomSubmitVo);

    //若为更新操作,则先删除与Room相关的各项信息列表
    if (isUpdate) {
       

        //6.删除原有leaseTermList
        ......

        //7.删除缓存
        redisTemplate.delete(RedisConstant.APP_LOGIN_PREFIX + roomSubmitVo.getId());
    }

  
    ......
}

removeRoomById方法

java 复制代码
@Override
public void removeRoomById(Long id) {

    //1.删除RoomInfo
    ......

    //2.删除graphInfoList
    ......

    //3.删除attrValueList
    ......

    //4.删除facilityInfoList
    ......

    //5.删除labelInfoList
    ......

    //6.删除paymentTypeList
    ......

    //7.删除leaseTermList
    ......

    //8.删除缓存
    redisTemplate.delete(RedisConstant.APP_ROOM_PREFIX + id);
}

压力测试

Apifox对根据ID获取房间详情这个接口进行压力测试

成功

自动化测试

七、项目部署

域名解析

部署前端项目

java 复制代码
npm run build

后台管理系统

admin.lease.nanshu.xyz

移动端

lease.nanshu.xyz

部署后端项目

使用 IDEA 的 maven 插件对项目进行打包,完成后,在web-adminweb-app 模块的target目录下找到web-admin-1.0-SNAPSHOT.jarweb-app-1.0-SNAPSHOT.jar

因为数据库权限设置为本地

所以我跳过测试打包

问题

全启动瞬间负载100%,就这样

结束

相关推荐
晓梦林29 分钟前
MAZESEC-X1靶场学习笔记
笔记·学习
我的xiaodoujiao1 小时前
API 接口自动化测试详细图文教程学习系列15--项目实战演练2
python·学习·测试工具·pytest
TImCheng06091 小时前
职场人AI学习周期评估:不同学习路径的时间成本
人工智能·学习
周末也要写八哥1 小时前
C4D/Cinema 4D 2026超详细下载与安装教程(附资源包)
学习·数学建模
xinzheng新政1 小时前
openclaw dashboard报错 internal server error
学习
nashane2 小时前
HarmonyOS 6学习:RichEditor宽度“暴力”计算与富文本截图避坑
学习·harmonyos 5
鹿鸣悠悠3 小时前
【AI学习】全链路、并发、响应时间
学习
PNP Robotics3 小时前
领军军者|PNP机器人包文涛:以具身智能定义机器人的“生命直觉”
人工智能·深度学习·学习·机器学习·机器人
QYQ_11273 小时前
嵌入式学习——字符设备驱动的注册和调用流程
学习
xinhuanjieyi4 小时前
极语言让ai学习的方法
开发语言·学习