各版本信息如下:
Spring Boot版本:2.0
JDK版本:1.8
开发工具:IntelliJ IDEA
构建工具:maven-3.5.0
构建工具是一个把源代码生成可执行应用程序的自动化工具,Java 领域中主要有三大构建工具:Ant、Maven 和 Gradle。
- Ant(AnotherNeatTool)的核心是由 Java 编写,采用 XML 作为构建脚本,这样就允许你在任何环境下运行构建。Ant 是 Java 领域最早的构建工具,不过因为操作复杂,慢慢的已经被淘汰了。
- Maven,Maven 发布于 2004 年,目的是解决程序员使用 Ant 所带来的一些问题,它的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性。
- Gradle,Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML。结合了前两者的优点,在此基础之上做了很多改进,它具有 Ant 的强大和灵活,又有 Maven 的生命周期管理且易于使用。
安装 Maven 的前提是完成 Java 环境安装,Maven 依赖于 Java 环境。访问 Maven 官网(http:maven.apache.org/)下载 Maven 对应的压缩包。
选择 Maven 的 zip 压缩包(apache-maven-3.5.4.zip),下载完成后解压到本机目录下。例如,路径:D:\Soft_test\maven。maven免安装,解压后直接使用即可。
环境变量配置:
1、此电脑右键-属性-高级系统配置-环境变量,进入环境变量编辑页面,在【系统变量】栏选择新建:
2、在【系统变量】栏双击【Path】,点击新建将【%MAVEN_HOME%】添加进去。
3、测试:Win10 下使用快捷 window+r 输入 cmd 命令,弹出“运行”对话框,执行命令 mvn -v,若出现如下结果,则表示安装成功!
以上,maven安装并配置完成。
settings.xml 设置:
Maven 解压后目录下会有一个 settings.xml 文件,位置:${M2_HOME}/conf/settings.xml,用来配置 Maven 的仓库和本地 Jar 包存储地址。Maven 仓库地址代表从哪里去下载项目中的依赖包 Jar 包;Maven 会将所有的 Jar 包统一存储到一个地址下,方便各个项目复用。
localRepository 设置本地存放 Jar 包地址,可以根据自己的情况改动:
<localRepository>D:/Software_test/maven/repository</localRepository>
mirrors 为仓库列表配置的下载镜像列表,这里我们选择阿里的镜像,下载jar包时速度会快很多。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
IDEA配置maven:
每次打开新项目,都要重新配置maven地址,为了避免这个麻烦,设置一下idea的默认maven信息:
执行File–OtherSettings–Default Settings,选择maven:
本文会记录用SpringBoot创建一个简单的项目的详细步骤和相关代码,作为备忘。这个项目会实现一个接口,将数据库的数据返回给接口调用者。
创建项目前,配置编码格式,这是一个容易忽略的点,IDEA 中,仍然依次打开 File -> Settings,搜索“Encoding”,配置本地的编码信息,如下图所示:
首先,打开IDEA,点击File–New–Project:
选择Spring Initializr,点击Next:
这一步有Group和Artifact两个选项,需要填入groupid和groupid。那么,什么是groupid和artifactId?
groupid和artifactId被统称为“坐标”,是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
groupId一般分为多个段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
选择项目名称和保存目录
点击Finish,再自行创建包和类,完成项目的创建:
project
+-src
+- main
+- java
+- com.example.demo
+- config
+- controller
+- dao
+- model
+- service
+- utils
+- Application.java
+- resources
+- static
+- templates
+- application.properties
+- test
+-pom.xml
创建好的项目结构如上图,可以看到自己创建了一些包,说下它们的作用:
resources 目录下:
pom.xml 文件主要描述了项目包的依赖和项目构建时的配置,在默认的 pom.xml 包中分为四大块。
第一部分为项目的描述信息:
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
groupId:项目的包路径;
artifactId:项目名称;
version:项目版本号;
packaging:一般有两个值:jar、war,表示使用 Maven 打包时构建成 Jar 包还是 War 包;
name:项目名称;
description:项目描述。
第二部分为项目的依赖配置信息:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- parent:标签内配置 Spring Boot 父级版本 spring-boot-starter-parent,Maven 支持项目的父子结构,引入父级后会默认继承父级的配置;
- dependencies:标签内配置项目所需要的依赖包,Spring Boot 体系内的依赖组件不需要填写具体版本号,spring-boot-starter-parent 维护了体系内所有依赖包的版本信息。
第三部分为构建时需要的公共变量:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<fastjson.version>1.2.47</fastjson.version>
<druid.version>1.1.9</druid.version>
<mybatis.version>1.3.2</mybatis.version>
</properties>
上面配置了项目构建时所使用的编码,输出所使用的编码,最后指定了项目使用的 JDK 版本和其他第三方jar包的版本。
第四部分为构建配置:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
使用 Maven 构建 Spring Boot 项目必须依赖于 spring-boot-maven-plugin 组件,spring-boot-maven-plugin 能够以 Maven 的方式为应用提供 Spring Boot 的支持,即为 Spring Boot 应用提供了执行 Maven 操作的可能。spring-boot-maven-plugin 能够将 Spring Boot 应用打包为可执行的 jar 或 war 文件,然后以简单的方式运行 Spring Boot 应用。
下面附上完整的pom文件,包括了几个常用的依赖(mysql、lombak等),可以自行删除,另外,注意根据自己的项目进行修改groupId、artifactId、name等:
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>mudemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mudemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<swagger.version>2.8.0</swagger.version>
<google.guava>23.0</google.guava>
<fastjson.version>1.2.47</fastjson.version>
<druid.version>1.1.9</druid.version>
<poi.version>3.17</poi.version>
<jwt.version>0.9.0</jwt.version>
<mybatis.version>1.3.2</mybatis.version>
</properties>
<dependencies>
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<!--连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
项目自动生成的配置文件是.properties文件,个人习惯使用更加简洁直观的.yml格式,文件中配置了项目的端口号和数据库连接信息:
server:
port: 8088
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=true
username: root
password:
serverTimezone=UTC要放在第一个位置,如果没有这个属性,可能出现以下异常:
Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC