学习: 尚硅谷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%,就这样

结束

相关推荐
晓梦林12 分钟前
stitch靶场学习笔记
笔记·学习
z2005093015 分钟前
【linux学习】linux的一些奇怪知识,方便日常使用
学习
魔法阵维护师35 分钟前
从零开发游戏需要学习的c#模块,第十三章(rpg小游戏入门,下篇,地图敌人与战斗触发)
学习·游戏·c#
. . . . .38 分钟前
业务知识学习
学习
_Evan_Yao1 小时前
如何搭建属于自己的技术博客(CSDN / GitHub Pages)
后端·学习·github
炽烈小老头1 小时前
【每天学习一点算法 2026/05/21】课程表
学习·算法
Harm灬小海2 小时前
【云计算学习之路】学习Centos7系统-Linux软件包管理
linux·运维·服务器·学习·云计算·yum·rpm
魔法阵维护师2 小时前
从零开发游戏需要学习的c#模块,第十七章(显示真正的图片——精灵绘制)
学习·游戏
婷婷_1722 小时前
JTAG (IEEE 1149.1)学习记录
学习·程序人生·debug·芯片·jtag·phy·eth/pcie
ygkl96982 小时前
未完待续 模拟题
学习