学习: 尚硅谷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-admin 和web-app 模块的target目录下找到web-admin-1.0-SNAPSHOT.jar和web-app-1.0-SNAPSHOT.jar。

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

所以我跳过测试打包

问题

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

结束

相关推荐
m4Rk_1 小时前
【论文阅读】Agent记忆机制(112):MemFit——保留对话原文,用多路检索降低长期记忆成本
论文阅读·人工智能·学习·开源·github
kyrie_sakura1 小时前
大模型学习17 大模型学习 - LangChain1_概述
学习
程序猿乐锅2 小时前
【从0-1学习Python | 第九篇】继承
开发语言·后端·python·学习·fastapi
海绵宝宝转agent2 小时前
leetcodehot100个人题解
java·笔记·学习·算法
学长毕设13 小时前
基于SpringBoot的青少年编程学习平台系统-附源码
spring boot·学习·青少年编程
小小de风呀16 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
李某学编程16 小时前
基于ARM的微机原理学习笔记(一)
arm开发·笔记·学习
Song_RsHt17 小时前
Redis 与微服务,什么场景下无可替代
java·redis·后端·学习·微服务
~kiss~20 小时前
PRO-LONG: Programmatic Memory Enables Long-Horizon Reasoning 程序式记忆赋能长程推理
学习
程序猿编码20 小时前
不依赖 vLLM/llama.cpp:一套面向学习的 DeepSeek-R1 CUDA 推理实现
c++·学习·语言模型·llama·vllm·大模型推理