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

结束

相关推荐
进阶小白猿2 小时前
Java技术八股学习Day24
java·开发语言·学习
Easonmax2 小时前
小白学习React Native 鸿蒙跨平台开发:实现一个简单的商品评价页面
学习·react native·harmonyos
Easonmax2 小时前
小白学习React Native 鸿蒙跨平台开发:静态文章详情页面实现
学习·react native·harmonyos
战神卡尔迪亚2 小时前
校招DBA成长记录(一)
数据库·学习·dba
知南x2 小时前
【华为昇腾DVPP/AIPP学习篇】(2)AIPP的使用
学习·华为
强子感冒了10 小时前
Java网络编程学习笔记,从网络编程三要素到TCP/UDP协议
java·网络·学习
Quintus五等升11 小时前
深度学习④|分类任务—VGG13
人工智能·经验分享·深度学习·神经网络·学习·机器学习·分类
二哈喇子!11 小时前
Java框架精品项目【用于个人学习】
java·spring boot·学习
Mixtral12 小时前
2026年4款学习转写工具测评:告别逐字整理,自动生成复习资料
笔记·学习·ai·语音转文字