SpringCloud系列:2.Spring Boot项目搭建
Spring Cloud以Spring Boot为基石,是Spring Boot框架的延续和扩展,所以在开始Spring Cloud微服务前,我们需要先了解Spring Boot框架,如果之前没有接触过Spring Boot,也是没有关系的,相信简单的了解后你就会使用。
一、什么是Spring Boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring Boot框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
可以说Spring Boot并不是什么新的框架,它只是默认配置了很多框架的使用方式,对一切常用的组件进行整合,达到了自动配置,开箱即用,从而方便快速开发。
在使用上,Spring Boot通过提供一系列名称以spring-boot-starter开头的启动器帮助我们简化项目的依赖。比如,当我们在项目中添加了spring-boot-starter-web时,Spring Boot就自动将相关依赖,如spring-mvc、jackson-json、tomcat等引入,从而将项目变成一个Web项目。大家可以到这里(http://t.cn/Rn30Zr7)查看全部的Spring Boot启动器列表。以下是开发中常用的启动器:
二、搭建Spring Boot
搭建环境:jdk1.8(必须1.8或以上版本)、Spring Boot2.1.1.RELEASE(2.x版本与1.x版本有所不同)、maven3.5.3(没有版本要求)、mysql8.0.13(不同版本可能略有不同)
开发工具没有任何要求,自己熟悉的即可,这里我使用了Eclipse。
在eclipse中,选择新建项目,选择Spring Boot下的Spring Starter Project即可。
然后设置项目名和包名。
然后选择Spring Boot版本,选择2.x的版本,以及需要依赖的组件,这里选择了则pom文件里会自动引入,不选择也没有任何影响,后续需要可以再手动添加。
项目建成后,目录结构如下,其中SpringbootProjectApplication为项目的启动类,默认为Application.java,这里我进行了修改,右键选择Run As或者Debug As即可启动该项目,其中@SpringBootApplication声明这是一个Spring Boot项目,@ComponentScan扫描项目中的bean,如果程序代码均在启动类同包下,则不需要声明,@MapperScan声明mybatis的dao层的扫描路径,如果不引入mybatis,则不需要。
以下是pom文件,其中除了Spring Boot项目必须的spring-boot-starter-web外,还引入了mybatis组件(因为实际工作中常用mybatis,所以这里也引入了mybatis),mysql数据源以及druid连接池,此外,为了简化代码和开发,还引入了lombok插件——简化繁杂代码,swagger2API文档组件——方便接口调用测试,spring-boot-devtools热部署插件。
<?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>
<!-- 这里将项目的父项目设置为Spring Boot,所使用版本为2.1.1.RELEASE -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath />
</parent>
<!-- 这里设置本项目的groupId、artifactId和版本等信息 -->
<groupId>com.yanger</groupId>
<artifactId>user-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>user-server</name>
<description>Demo project for SpringCloud</description>
<properties>
<!-- 定义项目所使用的编码为UTF-8 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 项目所用JDK 1.8,也可以使用低版本,但建议还是使用JDK 1.8以上版本 -->
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<!-- 项目所使用第三方包的版本,统一在一个地方声明版本号,对项目可以进行统一管理,方便以后升级 -->
<swagger.version>2.7.0</swagger.version>
<mybatis.version>1.3.1</mybatis.version>
<druid.version>1.0.28</druid.version>
<mysql.version>8.0.13</mysql.version>
<spring-cloud.version>Finchley.SR2</spring-cloud.version>
</properties>
<dependencies>
<!-- 项目所用Spring Boot starters:web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis组件 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- alibaba的druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- 数据库连接 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- lombok插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- swagger2API文档支持 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<!-- test依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- optional=true,依赖不会传递 -->
<optional>true</optional>
<scope>true</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
</project>
然后就是Spring Boot的配置文件,Spring Boot文件支持properties和yml两种格式,默认文件名称都是application,存放在resources目录中。项目默认生成的是application.properties,这里改用了application.yml。其中server.port为应用启动后所监听的端口,不配置默认就是8080端口。
# 应用启动后所监听的端口,可以不配置,默认就是8080端口
server:
port: 10800
# 数据源的配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver #com.mysql.jdbc.Driver #8.0.13的驱动连接与旧版本有更改
url: jdbc:mysql://localhost:3306/clouds?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT
username: root
password: 1234
# 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
# mybatis配置,设置po数据库映射文件的路径,以及mapper的xml文件路径
mybatis:
typeAliasesPackage: com.yanger.*.po
mapperLocations: classpath*:mapper/**/*Dao.xml
configuration:
#打印mybatis的sql,方便开发
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapUnderscoreToCamelCase: true
# 配置日志输出级别,将Spring框架设置为INFO级别,而自己所编写的代码设置为DEBUG级别
logging:
file: D:/code/cloud/log/springboot-project.log
level:
org:
springframework: INFO
com:
yanger: DEBUG
自此,一个完整的Spring Boot项目就搭建完成了。另附上swagger的配置文件,使用则在Controller类上加上@Api注解即可,此外在方法上加上@ApiOperation可进行解释说明。user包为业务代码。user包为业务代码,包含了controller,service,dao,po实体,vo对象,功能为简单的增删改差,这里就不贴具体代码了,需要的可以去源码地址查看或者下载,项目源码地址:https://github.com/imyanger/springcloud-project/tree/master/p1-springboot。
然后启动项目,因为没有前台界面,可以访问swagger界面,输入网址:http://localhost:10800/swagger-ui.html,即可出现如下界面,可以对展示方法进行测试。
项目源码地址:https://github.com/imyanger/springcloud-project/tree/master/p1-springboot