--- title: "02-项目初始化" created: 2025-12-02 tags: - 项目 aliases: - 项目初始化 --- # 项目初始化 ## git ```bash git init git config user.name "Zwww" git config user.email "zv041118@163.com" git remote add origin git@git.acwing.com:Zwww/zwww_blog.git git status git add . git status git commit -m "项目搭建 后端初始化" git push -u origin master ``` ## 后端初始化 ### SpringBoot jdk8 SpringBoot2.7.6 ![[image-dc83c4a5.png]] ![[image-91aaf21d.png]] ### Database mysql: ```java create database Zwww_blog; use zwww_blog ``` ![[image-e2d45678.png]] yml: ```yaml server: port: 8124 servlet: context-path: /api spring: application: name: Zwww-blog-backend datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/zwww_blog?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true username: root password: zw200495 ``` ### 整合依赖 #### Pom ```xml 4.0.0 com.zwnsyw Zwww-blog-backend 0.0.1-SNAPSHOT Zwww-blog-backend Zwww-blog-backend 1.8 UTF-8 UTF-8 2.7.6 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-aop org.springframework.boot spring-boot-starter-test test com.baomidou mybatis-plus-boot-starter 3.5.9 com.baomidou mybatis-plus-jsqlparser-4.9 com.mysql mysql-connector-j runtime org.projectlombok lombok true org.springframework.boot spring-boot-starter-validation javax.validation validation-api cn.hutool hutool-all 5.8.26 org.apache.commons commons-lang3 3.12.0 com.github.xiaoymin knife4j-openapi2-spring-boot-starter 4.4.0 org.springframework.boot spring-boot-dependencies ${spring-boot.version} pom import com.baomidou mybatis-plus-bom 3.5.9 pom import org.apache.maven.plugins maven-compiler-plugin 3.8.1 1.8 1.8 UTF-8 org.springframework.boot spring-boot-maven-plugin ${spring-boot.version} com.zwnsyw.zwwwblogbackend.ZwwwBlogBackendApplication true repackage repackage ``` #### MVC层级 ![[image-c8a28f9b.png]] src └── main └── java └── com.zwnsyw.zwwwblogbackend ├── controller │ └── UserController.java ├── service │ └── impl │ └── UserServiceimpl.java │ └── UserService.java ├── mapper │ └── UserMapper.java ├── entity │ └── UserEntity.java ├── dto │ └── UserRegisterDTO.java ├── vo │ └── UserVO.java ├── enums │ └── UserTypeEnum.java ├── config │ └── MyBatisPlusConfig.java ├── utils │ └── BeanCopyUtil.java ├── exception │ └── BusinessException.java ├── task └── DataCleanupTask.java ##### mapper层 配置mybatis-plus 扫描mapper包 由mybatis-plus自动处理 添加MyBatisPlusConfig ```java package com.zwnsyw.zwwwblogbackend.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @MapperScan("com.zwnsyw.zwwwblogbackend.mapper") public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } } ``` application.yml 中追加配置 开启日志 、逻辑删除 ```yaml mybatis-plus: configuration: map-underscore-to-camel-case: false # 不自动下划线转驼峰 手动统一命名为全驼峰 # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 仅在开发环境开启日志(会输出拼接的sql语句方便调试) default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler # 解决@EnumValue不生效 global-config: db-config: logic-delete-field: isDelete # 全局逻辑删除的实体字段名 logic-delete-value: 1 # 逻辑已删除值(默认为 1) logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) ``` ##### controller层 配置swagger application.yml 中追加接口文档配置,扫描 Controller 包: ```yaml # 接口文档配置 knife4j: enable: true openapi: title: "接口文档" version: 1.0 group: default: api-rule: package api-rule-resources: - com.zwnsyw.zwwwblogbackend.controller ``` ##### 启动类配置启动AOP `exposeProxy = true` 的:通过 Spring AOP 提供对当前代理对象的访问,使得可以在业务逻辑中访问到当前的代理对象。 可以在方法执行时通过 `AopContext.currentProxy()` 获取当前的代理对象 ```java package com.zwnsyw.zwwwblogbackend; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.EnableAspectJAutoProxy; @SpringBootApplication @EnableAspectJAutoProxy(exposeProxy = true) public class ZwwwBlogBackendApplication { public static void main(String[] args) { SpringApplication.run(ZwwwBlogBackendApplication.class, args); } } ``` #### 全局跨域配置 ```java package com.zwnsyw.zwwwblogbackend.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowCredentials(true) .allowedOriginPatterns("http://localhost:5173", "http://127.0.0.1:5173") .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .allowedHeaders("Content-Type", "Authorization") .exposedHeaders("X-Total-Count") .maxAge(3600); } } ``` ### 通用基础代码 自定义异常 响应包装 全局异常处理 请求包装 直接把两个写好的包复制进来即可 ![[image-b8d80743.png]] --- **项目分区导航**:⬅️ [[2-Learning/05-项目/07-实战项目/03-自研/01-Zwww-Blog/01-项目介绍|01-项目介绍]] | 02-项目初始化 | ➡️ [[03-Blog模块|03-Blog模块]]