# xunwu **Repository Path**: adsadaa/xunwu ## Basic Information - **Project Name**: xunwu - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: developer - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-05-17 - **Last Updated**: 2026-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # xunwu(寻屋) 基于 **Spring Boot** 的租房信息发布与检索 Web 应用:管理员发布与审核房源,用户浏览、条件/地图搜索、预约看房;会话使用 **Redis**,检索与自动补全使用 **Elasticsearch**,房源索引变更通过 **Kafka** 异步同步。 - **Artifact**:`com.imooc:xunwu-project:0.0.1-SNAPSHOT`(可执行 JAR) - **主类**:`com.imooc.Application` - **默认环境**:`spring.profiles.active=dev`(见 `src/main/resources/application.properties`) ## 技术栈 | 类别 | 说明 | |------|------| | 框架 | Spring Boot 1.5.x、Spring MVC、Spring Data JPA | | 安全 | Spring Security(表单登录、角色 `USER` / `ADMIN`、自定义 `AuthFilter`) | | 视图 | Thymeleaf 3、Layout Dialect、Thymeleaf Spring Security 扩展 | | 数据 | MySQL、H2(仅测试) | | 缓存/会话 | Redis、Spring Session(`spring.session.store-type=redis`) | | 搜索 | Elasticsearch 5.6.x(Transport Client,端口默认 9300) | | 消息 | Spring Kafka(房源索引等 topic 消费) | | 其他 | 七牛云对象存储、阿里云短信、Spring Mail、ModelMapper、Lombok | ## 功能概览 - **前台**:首页、租房检索(含自动补全、地图搜索相关接口)、用户登录与个人中心、房源预约(`/api/user/house/subscribe` 等) - **管理端**:`/admin/**` 房源录入、审核、图片上传(七牛)等(需 `ADMIN` 角色) - **健康检查示例**:根应用类上提供 `GET /hello` 测试接口 ## 环境要求 - **JDK 8** - **Maven 3.x** - **MySQL 5.6+**(数据库名示例:`xunwu`) - **Redis** - **Elasticsearch 5.6.x**(与 `pom.xml` 中 `elasticsearch.version` 一致;集群名、地址见 profile 配置) - **Kafka**(与 `SearchServiceImpl` 中 `@KafkaListener` 等逻辑配合;本地需可连 `bootstrap-servers`) ## 数据库初始化 在 MySQL 中执行项目内脚本(会创建库 `xunwu` 并导入表与示例数据): `src/main/resources/db/xunwu.sql` 生产环境请使用 `spring.jpa.hibernate.ddl-auto=validate`(默认),仅通过脚本或迁移管理表结构。 ## 配置说明 各环境拆分在: - `application.properties`:公共项(激活 profile、JPA、Session、Thymeleaf 等) - `application-dev.properties`:本地开发(MySQL、Redis、Kafka、ES、上传临时目录等) - `application-online.properties`:线上示例(如 `server.port=9999`) - `application-test.properties`:测试 **务必自行修改**:数据源账号、Redis、Kafka、Elasticsearch 集群名与地址、七牛/阿里云短信/邮箱等第三方密钥。**不要将真实密钥提交到公开仓库**;若仓库中已有示例密钥,上线前请轮换并改为环境变量或外部配置。 **上传目录**:`application-dev.properties` 中 `spring.http.multipart.location` 默认为 Windows 路径,在 macOS/Linux 上请改为本机可写目录(线上可参考 `application-online.properties` 中的 `/tmp` 思路)。 ## 构建与运行 ```bash # 编译打包(生成可执行 JAR) mvn clean package -DskipTests # 运行(默认使用 dev profile,与 application.properties 一致) java -jar target/xunwu-project-0.0.1-SNAPSHOT.jar # 或开发时直接由 Maven 启动 mvn spring-boot:run ``` 开发环境未显式配置 `server.port` 时使用 Spring Boot 默认 **8080**;`application-online.properties` 中为 **9999**。以实际选用的 profile 为准。 ## 测试 ```bash mvn test ``` 项目使用 JaCoCo 在 `prepare-package` 阶段生成覆盖率报告(并对 `com.imooc.service.*`、`com.imooc.repository.*` 等配置了阈值规则,见 `pom.xml`)。 ## 主要访问入口(路径) | 路径 | 说明 | |------|------| | `/`、`/index` | 首页 | | `/user/login` | 用户登录 | | `/admin/login` | 管理员登录 | | `/403`、`/404`、`/500` | 错误页 | | `/logout` | 登出(成功后跳转 `/logout/page`) | 具体业务接口见 `com.imooc.web.controller` 包下各 Controller。 ## 参与贡献 1. Fork 本仓库 2. 新建功能分支(如 `feat/xxx`) 3. 提交变更并编写/更新测试 4. 发起 Merge Request / Pull Request --- 本项目源自慕课网「寻屋」类教学实践,在本地部署前请完整配置数据库与中间件并替换所有敏感配置项。