{"id":22107682,"url":"https://github.com/airmomo/mospring","last_synced_at":"2026-04-20T19:05:28.997Z","repository":{"id":144479726,"uuid":"520042000","full_name":"Airmomo/mospring","owner":"Airmomo","description":"Spring Service Cli — 基于Spring框架及其他热门框架搭建的Web服务快速开发手脚架","archived":false,"fork":false,"pushed_at":"2022-10-22T12:42:50.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-05T17:11:34.396Z","etag":null,"topics":["cli","springboot","web"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Airmomo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-01T09:17:44.000Z","updated_at":"2024-09-08T14:22:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"9107cd2b-2556-4f7a-9c59-1469969412d4","html_url":"https://github.com/Airmomo/mospring","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Airmomo/mospring","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Airmomo%2Fmospring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Airmomo%2Fmospring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Airmomo%2Fmospring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Airmomo%2Fmospring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Airmomo","download_url":"https://codeload.github.com/Airmomo/mospring/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Airmomo%2Fmospring/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32061266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","springboot","web"],"created_at":"2024-12-01T08:18:49.475Z","updated_at":"2026-04-20T19:05:28.991Z","avatar_url":"https://github.com/Airmomo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MOSpring — Spring Service Cli\n基于Spring框架及其他热门框架搭建的Web服务快速开发手脚架\n\n**本项目已经整合了Web服务常用的框架，利用本项目可以快速搭建并启动Web服务**\n\n**同时也不用关心大多的配置，本项目已经完成了许多必要的配置，可以把大多数的精力都放在业务开发上**\n\n**对于项目中的每个配置、配置、功能点都有较为详细的注释用以说明，方便查看和学习**\n\n# 优势\n- 实现了与用户登陆、注册和删除功能，可以快速复用\n- 实现了异常路由、自定义异常类和异常枚举类，可以通过枚举类快速构建异常响应\n- 支持响应序列化，对返回的实体对象进行序列化处理，隐藏敏感数据\n- 支持全局异常和全局响应的拦截和处理\n- 支持多环境配置（开发环境/生产环境）\n- Slf4j作为日志门面，Logback作为日志实现\n- 整合Swagger3，自动生成API测试文档\n- 整合Spring Security，可配置CSRF-Token来防御CSRF攻击\n\n# 前后端分离\n\n在前后端分离的开发形式，本项目也很好地支持后端服务的独立开发，基于Alibaba提供的FastJSON依赖，让数据完全以JSON格式来与前端进行交互\n\n当你的项目以前后端分离的形式进行开发时，在使用本项目搭建后端服务时需要注意：\n- 页面和静态资源都以在前端部署的，可删除resources下的静态资源目录static和模版资源目录templates\n  - [static](./src/main/resources/static)\n  - [templates](./src/main/resources/templates)\n- 启用本项目提供的两个组件类来完善功能\n  - 全局异常响应类（返回数据为JSON格式）[GlobalExceptionHandler](./src/main/java/com/mospring/controller/handler/GlobalExceptionHandler.java)\n  - Spring Security认证请求控制类（返回数据为JSON格式）[JsonSecurityController](./src/main/java/com/mospring/controller/page/JsonSecurityController.java)\n- 这两个类主要是为了支持在前后端分离后，补充在异常响应和Security认证时，以JSON来交互数据\n- 删除或注释掉不需要的组件类\n  - 全局异常响应类（返回异常模版页面和异常信息）[GlobalExceptionPageHandler]((./src/main/java/com/mospring/controller/handler/GlobalExceptionPageHandler.java))\n  - 页面路由控制类（专门返回页面的Controller）[page目录](./src/main/java/com/mospring/controller/page)\n- 不注释掉注册组件的注释或者删除不需要的组件类的话，启动可以正常启动，但在响应请求时可能会产生预期外的结果\n\n你也可以选择克隆 [branch server](https://github.com/Airmomo/mospring/tree/server) 来获取本项目支持前后端分离的版本\n\n# 搭建环境和推荐工具\n- 编码工具：IntelliJ IDEA\n- Spring version ： 2.7.1\n- JDK version : 1.8.0\n- Maven version：2.7.1\n\n**本项目理论上兼容多个版本的环境，但可能需要修改下配置文件，为避免出现难以定位的错误，建议使用推荐的环境和版本来使用本项目**\n\n# 整合框架\n依赖管理工具：Maven —— 依赖详见文件Pom.xml\n- 安全认证 ： Spring Security\n- 视图层：Thymeleaf\n- 缓存层：Redis\n- 持久层\n  - 数据库映射：JPA\n  - 数据库连接：JDBC\n  - MySQL-Connector-Java\n- 工具层\n  - JSON解析：alibaba - fastjson\n  - 数据构建：lombok\n  - API测试：spring fox - Swagger3\n  - 日志记录：logging\n- 单元测试：spring - test\n\n# 目录结构简介\n- config：配置信息层\n- controller：路由控制层\n- dao：数据访问层\n- entity：实体类\n- enumer：自定义枚举类\n- exception:自定义异常类\n- serializer：数据响应序列化\n- service：数据服务层\n- MoSpringApplication：工程启动类\n\n# 日志记录\n- SpringBoot使用的是Slf4j作为日志门面，Logback\n- Logback也能实现定制化，SpringBoot推荐将配置文件名称命名为`logback-spring.xml`表示这是SpringBoot下Logback专用的配置\n- 在本项目中，已在项目根目录创建`logback-spring.xml`并实现了对Logback的定制化，可以按需修改文件\n\n# 配置文件\n- Maven配置：[pom.xml](./pom.xml)\n- 全局配置：[application.yml](./src/main/resources/application.yml)\n- 开发环境配置：[application-dev.yml](./src/main/resources/application-dev.yml)\n- 生产环境配置：[application-prod.yml](./src/main/resources/application-prod.yml)\n## 多环境配置\n本项目已支持了多环境配置，通过将Maven中的`environment`属性，传递给SpringBoot的配置文件，在构建时替换为对应的值：\n```yaml\nspring:\n  profiles:\n    active: '@environment@'  #注意YAML配置文件需要加单引号，否则会报错\n```\n这样，根据我们Maven环境的切换，SpringBoot的配置文件也会进行对应的切换。\n下面主要列举注释的配置内容\n```yaml\n# resources/application.yml\nserver:\n  # 服务端口\n  port: 8080\n  servlet:\n    # JSON防止中文乱码\n    encoding:\n      force-response: true\n    # 为所有Controller添加统一访问前缀\n    context-path: /api\nspring:\n  # 多环境配置\n  profiles:\n    # 从Maven配置中读取选择的环境变量（开发环境：dev/生产环境：prod）\n    active: '@environment@'  # 注意YAML配置文件需要加单引号，否则会报错\n  # 持久层数据源配置\n  datasource:\n    url: 'jdbc:mysql://localhost:3306/{数据库名称}'\n    username: '{数据库用户名}'\n    password: {数据库密码}\n    driver-class-name: com.mysql.cj.jdbc.Driver\n  # 缓存层数据源配置\n  redis:\n    # Redis服务器地址\n    host: localhost\n    # 端口\n    port: 6379\n    # 使用几号数据库\n    database: 0\n  # JPA 配置\n  jpa:\n    # 打印SQL语句\n    show-sql: true\n    # 数据库操作模式\n    hibernate:\n      ddl-auto: update\n    open-in-view: true\n  # Spring MVC 配置\n  mvc:\n    # SpringBoot 2.6以上版本修改了路径匹配规则，但是Swagger3还不支持\n    # 这里换回之前的，不然启动会直接报错\n    pathmatch:\n      matching-strategy: ant_path_matcher\n    # 静态资源配置\n    static-path-pattern: /static/**\n  thymeleaf:\n    # 开发阶段，建议关闭thymeleaf的缓存\n    cache: false\n# Swagger开关\nspringfox:\n  documentation:\n    swagger-ui:\n      enabled: false\n# 解决因为日志等级为DEBUG时，启动项目报\"CONDITIONS EVALUATION REPORT\"的问题\nlogging:\n  level:\n    org:\n      springframework:\n        boot:\n          autoconfigure: error\n```\n# 打包运行\n当SpringBoot项目编写完成之后，只需要点击Maven生命周期中的`package`即可，它会自动将其打包为可直接运行的Jar包，第一次打包可能会花费一些时间下载部分依赖的源码一起打包进Jar文件。\n\n我们发现在打包的过程中还会完整的将项目跑一遍进行测试，如果我们不想测试直接打包，可以手动使用以下命令：\n```shell\nmvn package  -DskipTests\n```\n打包后，我们会直接得到一个名为`mospring-0.0.1-SNAPSHOT.jar`的文件，在文件目录打开控制台窗口，输入命令：\n```shell\njava -jar mospring-0.0.1-SNAPSHOT.jar\n```\n输入后即可将SpringBoot项目运行在本地运行，如果手动关闭窗口会导致整个项目终止运行。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairmomo%2Fmospring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fairmomo%2Fmospring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairmomo%2Fmospring/lists"}