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启动器列表。以下是开发中常用的启动器:

SpringCloud系列:2.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即可。

SpringCloud系列:2.Spring Boot项目搭建

然后设置项目名和包名。

SpringCloud系列:2.Spring Boot项目搭建

然后选择Spring Boot版本,选择2.x的版本,以及需要依赖的组件,这里选择了则pom文件里会自动引入,不选择也没有任何影响,后续需要可以再手动添加。

SpringCloud系列:2.Spring Boot项目搭建

项目建成后,目录结构如下,其中SpringbootProjectApplication为项目的启动类,默认为Application.java,这里我进行了修改,右键选择Run As或者Debug As即可启动该项目,其中@SpringBootApplication声明这是一个Spring Boot项目,@ComponentScan扫描项目中的bean,如果程序代码均在启动类同包下,则不需要声明,@MapperScan声明mybatis的dao层的扫描路径,如果不引入mybatis,则不需要。

SpringCloud系列:2.Spring Boot项目搭建

以下是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端口。

SpringCloud系列:2.Spring Boot项目搭建

# 应用启动后所监听的端口,可以不配置,默认就是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

SpringCloud系列:2.Spring Boot项目搭建

然后启动项目,因为没有前台界面,可以访问swagger界面,输入网址:http://localhost:10800/swagger-ui.html,即可出现如下界面,可以对展示方法进行测试。

SpringCloud系列:2.Spring Boot项目搭建

项目源码地址:https://github.com/imyanger/springcloud-project/tree/master/p1-springboot