北京时间 2018 年 3 月 1 日早上,在经历了一番波折之后,Spring Boot 2.0.0发布了,这对于每一个java web开发者来说,都是值得欣喜的事情
Spring Boot的出现,无意对于像我这样热衷于前后端分离开发的人来说,是一件值得欣喜的事情。也结束了我每一次在搭建项目环境时,对于配置文件的重复编写
更觉得自己应该开始记录自己在使用Spring Boot过程中的点点滴滴
环境搭建
创建maven项目,在pom.xml中添加依赖
- 首先要继承
spring-boot
org.springframework.boot
spring-boot-starter-parent
2.0.0.RELEASE
2.添加依赖
org.springframework.boot
spring-boot-starter-web
由于我们在继承的时候已经指定了版本,所以这里就不需要版本了
3.编写启动类
package com.funshion;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class, args);
}
}
执行App
类的main方法,我们就启动了web项目,一个java-web项目
搭建配置简单
做java-web
开发,搭建环境最重要的就是要添加我们需要的第三方依赖库,在传统的项目搭建中,我们要依赖一大堆的spring
库,但是spring-boot为我们减少了一些繁琐无用的依赖配置,世界顿时清净了!
内置软件服务
spring-boot内嵌了tomcat服务,我们执行了App类的main,就启动了Tomcat,默认监听8080端口
接下来的开发就跟我们原来使用spring开发一样了,各种dao
、service
、controller
分层结构开始使用了
项目编译打包
在开发完成后,我们需要将项目代码编译打包,然后部署到服务器上,对于spring-boot项目的打包,我们需要对其做一些配置
1.配置打包插件
org.springframework.boot
spring-boot-maven-plugin
如果没有这个插件,打包的后jar文件在启动时,会找不到启动类
2.打包war文件,要代码中指定servlet的初始化
package com.funshion.common.config;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import com.funshion.App;
public class ServletInitializer extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(App.class);
}
}
环境自动切换
在项目或产品从开发、内测、公测、发布的过程中,总是免不了要发生服务器环境的变化,或者一些参数要进行变化,如
- 数据库相关信息不同
- 日志级别不同
- 文件路径不同
- 与其他系统交互的接口地址不同
- ……
所以需要我们做一些非常有用,但是却没有多少价值的工作
然而spring-boot为我们带来了环境切换的功能
假如我们需要配置4个环境
- dev 开发环境
- test 内测环境
- beta 公测环境
- prod 生产环境
在
src/main/resources
目录创建application.yml
、application-dev.yml
、application-test.yml
、application-beta.yml
、application-prod.yml
五个spring-boot配置文件将不同环境的配置信息,写入到相应环境的配置文件中
在
application.yml
中进行设定
spring:
profiles:
active:
- dev
我们只需要指定active的值就可以
在运行jar文件时指定
当我们使用mvn package
命令后,就能将该项目编译打包成一个jar
文件,在命令行中执行
java -jar app.jar --spring.profile.active=prod
在项目启动后就会自动切换到想要的环境下
部署war文件如何指定
上述说的是在打包成jar文件后,使用命令行启动,来达到环境自动切换的效果,可是按照我们已有的习惯,我们更愿意在服务器上部署好tomcat,然后将项目编程打包成war文件,然后部署到tomcat的webapps目录下,然后启动tomcat,访问我们的应用
想要在打包war文件时指定环境的变量,就需要跟maven组合在一起使用了
- 在pom.xml中定义不同环境的变量
dev
dev
org.springframework.boot
spring-boot-devtools
true
prod
true
prod
test
test
beta
beta
- 使用
maven-resources-plugin
插件将变量写入到文件中
org.apache.maven.plugins
maven-resources-plugin
default-resources
validate
copy-resources
target/classes
true
${*}
src/main/resources/
true
**/*.xml
**/*.yml
src/main/resources/
false
**/*.xml
**/*.yml
- 修改
application.yml
中的配置
spring:
profiles:
active:
- ${spring.profiles.active}
4.在打包命令中指定环境变量
mvn package -P prod
war文件部署需要注意的问题
spring-boot内嵌了tomcat,所以在使用war文件部署时,在编译打包的时候,就不能把tomcat相关的东西打包进去,需要修改一些配置
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-tomcat
provided
上述内容都是我在使用spring-boot的过程中遇到的,分享出来,大家共同进步!