北京时间 2018 年 3 月 1 日早上,在经历了一番波折之后,Spring Boot 2.0.0发布了,这对于每一个java web开发者来说,都是值得欣喜的事情
Spring Boot的出现,无意对于像我这样热衷于前后端分离开发的人来说,是一件值得欣喜的事情。也结束了我每一次在搭建项目环境时,对于配置文件的重复编写
更觉得自己应该开始记录自己在使用Spring Boot过程中的点点滴滴
环境搭建
创建maven项目,在pom.xml中添加依赖
- 首先要继承
spring-boot
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
2.添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
由于我们在继承的时候已经指定了版本,所以这里就不需要版本了
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.配置打包插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</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中定义不同环境的变量
<profiles>
<!-- 开发环境 -->
<profile>
<id>dev</id>
<properties>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
<!-- 在开发环境中,修改代码能够自动重启 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</profile>
<!-- 生产环境 -->
<profile>
<id>prod</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<spring.profiles.active>prod</spring.profiles.active>
</properties>
</profile>
<!-- 测试环境 -->
<profile>
<id>test</id>
<properties>
<spring.profiles.active>test</spring.profiles.active>
</properties>
</profile>
<!-- beta环境 -->
<profile>
<id>beta</id>
<properties>
<spring.profiles.active>beta</spring.profiles.active>
</properties>
</profile>
</profiles>
- 使用
maven-resources-plugin
插件将变量写入到文件中
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>default-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>target/classes</outputDirectory>
<useDefaultDelimiters>true</useDefaultDelimiters>
<delimiters>
<delimiter>${*}</delimiter>
</delimiters>
<resources>
<resource>
<directory>src/main/resources/</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources/</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/*.xml</exclude>
<exclude>**/*.yml</exclude>
</excludes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
- 修改
application.yml
中的配置
spring:
profiles:
active:
- ${spring.profiles.active}
4.在打包命令中指定环境变量
mvn package -P prod
war文件部署需要注意的问题
spring-boot内嵌了tomcat,所以在使用war文件部署时,在编译打包的时候,就不能把tomcat相关的东西打包进去,需要修改一些配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
上述内容都是我在使用spring-boot的过程中遇到的,分享出来,大家共同进步!
网友评论