打造一款适合自己的快速开发框架-后端脚手架搭建

1,661 阅读5分钟

前言

在先导篇中已经提到后端所用技术栈,这里算是入门篇,项目启动,搭建脚手架。

工程说明

目录结构

├── mldong-admin  管理端接口
    ├── component  组件包
    ├── config  配置加载
    └── modules
      └──sys
        ├── dao 持久层-该层代码可自定义
        ├── dto dto层,可为查询结果实体、请求参数实体、业务实体
        ├── enums 错误码定义
		├── vo vo层,前端需要什么,定义什么
        └── service 服务层
├── mldong-common  工具类及通用代码
├── mldong-generator  代码生成器
└── mldong-mapper 持久层,该层代码由代码生成器生成,不可手动变更
    └── modules
      └──sys
        ├── entity 实体类
        └── mapper 持久层

开始动手

不想截图,咱们一个个来创建。

创建基础目录结构及文件

mldong
	├── mldong-admin
		├── src
			├── main
				├── java
					└── com
						└── mldong
								modules
									└── sys
										└── controller
											└── LoginController.java
							└── MldongAdminApplication.java
				└── resources
					├── application-dev.yml
					└── application.yml
			└── test
				└── java
					└── .gitkeep
		└── pom.xml
	├── mldong-common
		├── src
			├── main
				├── java
					└── .gitkeep
				└── resources
					└── .gitkeep
			└── test
				└── java
					└── .gitkeep
		└── pom.xml
	├── mldong-generator
		├── src
			├── main
				├── java
					└── .gitkeep
				└── resources
					└── .gitkeep
			└── test
				└── java
					└── .gitkeep
		└── pom.xml
	├── mldong-mapper
		├── src
			├── main
				├── java
					└── .gitkeep
				└── resources
					└── .gitkeep
			└── test
				└── java
					└── .gitkeep
		└── pom.xml
	└── pom.xml

mldong/pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mldong</groupId>
  <artifactId>mldong</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>mldong</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring-boot.version>2.1.4.RELEASE</spring-boot.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
	<jwt.version>3.7.0</jwt.version>
    <com.alibaba.druid.version>1.0.18</com.alibaba.druid.version>
    <tk.mybatis.version>4.1.5</tk.mybatis.version>
    <mybatis.spring.boot.starter.version>2.1.0</mybatis.spring.boot.starter.version>
    <mapper.spring.boot.starter.version>2.1.0</mapper.spring.boot.starter.version>
    <pagehelper.spring.boot.starter.version>1.2.12</pagehelper.spring.boot.starter.version>
    <io.springfox-swagger2.version>2.7.0</io.springfox-swagger2.version>
	<swagger-knife.version>2.0.2</swagger-knife.version>
  </properties>
  <dependencyManagement>
    <dependencies>
    	<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
		<!--druid数据库连接池-->
		<dependency>
	        <groupId>com.alibaba</groupId>
	        <artifactId>druid</artifactId>
	        <version>${com.alibaba.druid.version}</version>
        </dependency>
		<!-- jwt -->  
	    <dependency>  
	        <groupId>com.auth0</groupId>  
	        <artifactId>java-jwt</artifactId>  
	        <version>${jwt.version}</version>  
	    </dependency>  
	    <!-- tk.mybatis -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.spring.boot.starter.version}</version>
            </dependency>
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper</artifactId>
                <version>${tk.mybatis.version}</version>
            </dependency>
            <!--mapper-->
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-spring-boot-starter</artifactId>
                <version>${mapper.spring.boot.starter.version}</version>
            </dependency>
            <!--pagehelper-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>${pagehelper.spring.boot.starter.version}</version>
            </dependency>
            <!-- tk.mybatis -->
            <dependency>
	            <groupId>net.sf.dozer</groupId>
	            <artifactId>dozer</artifactId>
	            <version>${dozer.version}</version>
	        </dependency>
			<!--swaggerui-->
			<dependency>
	            <groupId>io.springfox</groupId>
	            <artifactId>springfox-swagger2</artifactId>
	            <version>${io.springfox-swagger2.version}</version>
	        </dependency>
	        <dependency>
	            <groupId>io.springfox</groupId>
	            <artifactId>springfox-swagger-ui</artifactId>
	            <version>${io.springfox-swagger2.version}</version>
	        </dependency>
			<!--knife4j-->
			<dependency>
			    <groupId>com.github.xiaoymin</groupId>
			    <artifactId>knife4j-spring-boot-starter</artifactId>
			    <!--在引用时请在maven中央仓库搜索最新版本号-->
			    <version>${swagger-knife.version}</version>
			</dependency>
    </dependencies>
</dependencyManagement>
<repositories>
	<!--阿里云主仓库,代理了maven central和jcenter仓库-->
	<repository>
		<id>aliyun</id>
		<name>aliyun</name>
		<url>https://maven.aliyun.com/repository/public</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</repository>
</repositories>
<pluginRepositories>
	<!--阿里云代理Spring 插件仓库-->
	<pluginRepository>
		<id>spring-plugin</id>
		<name>spring-plugin</name>
		<url>https://maven.aliyun.com/repository/spring-plugin</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</pluginRepository>
</pluginRepositories>
<modules>
	<module>mldong-common</module>
	<module>mldong-generator</module>
	<module>mldong-mapper</module>
</modules>
</project>

mldong/mldong-admin/pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<parent>
		<artifactId>mldong</artifactId>
		<groupId>com.mldong</groupId>
		<version>1.0-SNAPSHOT</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>
	<properties>
	</properties>
	<artifactId>mldong-admin</artifactId>
	<dependencies>
		<dependency>
		    <groupId>com.mldong</groupId>
		    <artifactId>mldong-common</artifactId>
		    <version>${parent.version}</version>
		</dependency>
		<dependency>
		    <groupId>com.mldong</groupId>
		    <artifactId>mldong-mapper</artifactId>
		    <version>${parent.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<!--实现springboot的热加载-->
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <scope>true</scope>
        </dependency>
		<!-- MYSQL -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- 数据源 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
	</dependencies>
	 <build>
		<resources>
	         <resource>
	             <directory>src/main/resources</directory>
	             <includes>
	                 <include>**/*</include>
	             </includes>
	         </resource>
	         <resource>
	             <directory>src/main/lib</directory>
	             <targetPath>BOOT-INF/lib/</targetPath>
	             <includes>
	                 <include>**/*.jar</include>
	             </includes>
	         </resource>
	         <resource>
	             <directory>src/main/resources</directory>
	             <targetPath>BOOT-INF/classes/</targetPath>
	         </resource>
	     </resources>
    	<finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- 跳过单元测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

mldong/mldong-admin/src/main/java/com/mldong/MldongAdminApplication.java

启动类

package com.mldong;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MldongAdminApplication {
	public static void main(String[] args) {
		SpringApplication.run(MldongAdminApplication.class, args);
	}
}

mldong/mldong-admin/src/main/java/com/mldong/modules/sys/controller/LoginController.java

登录控制器,就一个hello world

package com.mldong.modules.sys.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LoginController {
	@GetMapping("hello")
	public String hello() {
		return "hello world";
	}
}

mldong/mldong-admin/src/main/resources/application.yml

主配置文件

server: 
  port: 18080
spring:
  application:
    name: mldong-admin
  profiles:
    active: dev
  jackson:
    default-property-inclusion: non_null
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: ${jdbc.driver-class-name}
    url: ${jdbc.url}
    username: ${jdbc.username}
    password: ${jdbc.password}
    max-idle: ${jdbc.max-idle}
    max-wait: ${jdbc.max-wait}
    min-idle: ${jdbc.min-idle}
  aop:
    proxy-target-class: true
    auto: true

mldong/mldong-admin/src/main/resources/application-dev.yml

开发环境配置

# jdbc 配置
jdbc.driver-class-name: com.mysql.cj.jdbc.Driver
jdbc.url: jdbc:mysql://localhost:3306/mldong?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai
jdbc.username: root
jdbc.password: 
jdbc.max-idle: 10
jdbc.max-wait: 10000
jdbc.min-idle: 5

mldong/mldong-common/pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<parent>
		<artifactId>mldong</artifactId>
		<groupId>com.mldong</groupId>
		<version>1.0-SNAPSHOT</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>
	<properties>
		
	</properties>
	<artifactId>mldong-common</artifactId>
	<dependencies>
		
	</dependencies>
</project>

mldong/mldong-generator/pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<parent>
		<artifactId>mldong</artifactId>
		<groupId>com.mldong</groupId>
		<version>1.0-SNAPSHOT</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>
	<properties>
		
	</properties>
	<artifactId>mldong-generator</artifactId>
	<dependencies>
		
	</dependencies>
</project>

mldong/mldong-mapper/pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<parent>
		<artifactId>mldong</artifactId>
		<groupId>com.mldong</groupId>
		<version>1.0-SNAPSHOT</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>
	<properties>
		
	</properties>
	<artifactId>mldong-mapper</artifactId>
	<dependencies>
		
	</dependencies>
</project>

先以最简单的目录结构创建工程目录文件,然后再导入

File->Import->Maven->Existing Maven Projects

启动运行项目

MldongAdminApplication.java

右键->Run As -> Java Application

访问页面

http://localhost:18080/hello

如项目启动正常,访问页面会出现 hello world ,到此,脚手架搭建完毕。本次只是先hello world,简单集成了spring-boot-devtools和druid,下一篇会集成mapper。

加入版本库,推送到git仓库

项目源码地址

  • 后端

gitee.com/mldong/mldo…

  • 前端

gitee.com/mldong/mldo…

相关文章

打造一款适合自己的快速开发框架-前端脚手架搭建

打造一款适合自己的快速开发框架-集成mapper

打造一款适合自己的快速开发框架-集成swaggerui和knife4j

打造一款适合自己的快速开发框架-通用类封装之统一结果返回、统一异常处理

打造一款适合自己的快速开发框架-业务错误码规范及实践

打造一款适合自己的快速开发框架-框架分层及CURD样例

打造一款适合自己的快速开发框架-mapper逻辑删除及枚举类型规范

打造一款适合自己的快速开发框架-数据校验之Hibernate Validator

打造一款适合自己的快速开发框架-代码生成器原理及实现

打造一款适合自己的快速开发框架-通用查询设计及实现

打造一款适合自己的快速开发框架-基于rbac的权限管理

打造一款适合自己的快速开发框架-登录与权限拦截

打造一款适合自己的快速开发框架-http请求日志全局处理

打造一款适合自己的快速开发框架-字典模块设计与实现

打造一款适合自己的快速开发框架-上传模块设计与实现

打造一款适合自己的快速开发框架-持续部署之一键发布脚本设计与实现