springboot 2.0.7 的项目搭建
springboot 2.0.7 简单介绍
SpringBoot是可以轻松创建、可以运行的、独立的、生产级的基于Spring的应用程序。为Spring开发提供了更快且广泛访问的入门体验,没有代码生成,也不需要XML配置。
新的版本要求
Spring Boot 2.0.7 要求Java高于8,原来的6和7已经不能适用了。Spring Framework 5.0.10.RELEASE 及以上。
1.System Requiremet
Build Tool | Version |
---|---|
Maven | 3.2+ |
Gradle | 4.x |
2.Servlet Containers
和原来1.5的版本不同,Tomcat的版本至少为8.5,当使用8.0时,会有问题存在。
Name | Servlet Version |
---|---|
Tomcat 8.5 | 3.1 |
Jetty 9.4 | 3.1 |
Undertow 1.4 | 3.1 |
springboot 2.0.7 搭建
创建工程项目(以Idea为例)
可以根据自己的项目具体需求选择相应的依赖
以下就是生成好的项目目录
可以将默认访问的属性文件applicaton.properties更改为application.yml,这样易于我们设置参数信息。
添加热部署
spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启SpringBoot应用。
在pom.xml中添加依赖
<!--热部署-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Eclipse是默认自动编译,Idea默认手动编译,因此Idea需要修改两个参数来达到任意时间自动编译的目的。
在Idea中,要在设置中将project automatically勾选上;File->Setting->Build,…->Compiler 将右侧project automatically勾上
使用Ctrl+Shift+Alt+/ 快捷键搜索Registry,选择搜索出来的第一个
找到compiler.automake.allow.when.app.running,勾上开启此功能即可
若是无效,可以Ctrl+F9来刷新
关于版本的一些问题
Tomcat 8.0
由于springboot 2.0.7 支持的 Tomcat 版本为8.5。在原来的一些系统上我们部署的Tomcat为8.0,若是此时去运行程序,会出现冲突(鉴于本人能力不够,于是在本机上再部署了一个Tomcat 8.5.35以解决问题)。
进入官网tomcat home - Apache Tomcat® - Welcome!选择相应的版本,点击下载
根据我的系统版本,下载的是适应windows 64-bit的,这个不需要安装,直接解压到目标路径下就可以。
我是解压在G盘之下
在系统环境变量中配置变量CATALINA_BASE(这里不能出现分号,别问我为什么!)、CATALINA_HOME2(这个为要配置的新的Tomcat的版本)
再在Path中添加两个路径 lib和bin
配置完成之后,点击确定-确定-确定,以使环境变量生效。
编辑模式下打开bin下的startup.bat,将其中的CATALINA_HOME全部替换为CATALINA_HOME2,保存修改。
编辑模式下打开bin下的catalina.bat,将其中的CATALINA_HOME全部替换为CATALINA_HOME2,保存修改。
编辑conf下的server.xml文件,将端口号改为未使用的
双击运行startup.bat文件。
在application.yml中配置相应的端口号:
server:
port: 8082
path: /
若是双击闪退,可以将startup.bat文件拖入cmd命令中运行,可以查看错误信息,来相应解决。
- CATALINA_BASE中如果包含两个地址,且用分号隔开,会造成闪退,不能包含分号。
- (小白问题)若是在全部替换的时候不小心多按了一次替换,可能要检查名字是否出错,不然会导致问题。
以上就是解决tomcat版本问题的方法:部署多个tomcat
Mysql 8.0
在yml中和5.5的版本写法有写不同,在driver-class-name和url中
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///dataname?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
username: root
password: 123
配置依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
Bug
我有遇到一个错误,当时发生的时候忘记截了,只有一个 tomcat org.apache.catalina.LifecycleException,发生这个的时候,应该是缺少了一个依赖(我在网上找了很久,都没发现如何解决,后来有一篇指出了这个问题,顺利解决!不过忘了它的链接囧)
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
导入,解决!