springBoot读取配置文件多环境热部署打包等基本配置
Posted kraviswy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springBoot读取配置文件多环境热部署打包等基本配置相关的知识,希望对你有一定的参考价值。
读取配置文件
在以前的项目中我们主要在 XML 文件中进行框架配置,业务的相关配置会放在属性文件中,
然后通过一个属性读取的工具类来读取配置信息。
在 Spring Boot 中我们不再需要使用这种方式去读取数据了。
Spring Boot 中的配置通常放在 application.properties 中,读取配置信息非常方便,总共分为 3 种方式。
1)Environment
可以通过 Environment 的 getProperty 方法来获取想要的配置信息,代码如下所示。
@RestController public class HelloController { // 注入对象 @Autowired private Environment env; @GetMapping("/hello") public String hello() { // 读取配置 String port = env.getProperty("server.port"); return port; } }
2)@Value
可以注入具体的配置信息,代码如下所示。
@RestController public class HelloController { // 注入配置 @Value("${server.port}") private String port; @GetMapping("/hello") public String hello() { return port; } }
3)自定义配置类
prefix 定义配置的前缀,代码如下所示。
@ConfigurationProperties(prefix = "net.biancheng") @Component public class MyConfig { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
读取配置的方法代码如下所示。
@RestController public class HelloController { @Autowired private MyConfig myConfig; @GetMapping("/hello") public String hello() { return myConfig.getName(); } }
定义配置 application.properties 的方法如下:
net.biancheng.name=zhangsan
profiles 多环境配置
在平时的开发中,项目会被部署到测试环境、生产环境,但是每个环境的数据库地址等配置信息都是不一样的。
通过 profile 来激活不同环境下的配置文件就能解决配置信息不一样的问题。
在 Spring Boot 中可以通过 spring.profiles.active=dev 来激活不同环境下的配置。
可以定义多个配置文件,每个配置文件对应一个环境,格式为 application-环境.properties,如表 1 所示。
application.properties | 通用配置,不区分环境 |
application-dev.properties | 开发环境 |
application-test.properties | 测试环境 |
application-prod.properties | 生产环境 |
在开发环境中,可以通过修改 application.properties 中的 spring.profiles.active 的值来激活对应环境的配置,
在部署的时候可以通过 java–jar xxx.jar--spring.profiles.active=dev 来指定使用对应的配置。
热部署
开发过程中经常会改动代码,此时若想看下效果,就不得不停掉项目然后重启。
对于 Spring Boot 项目来说,启动时间是非常快的,在微服务的架构下,
每个服务只关注自己的业务,代码量也非常小,这个启动时间是可以容忍的。
对于那些臃肿的单体老项目,启动时间简直是浪费生命。
虽然 Spring Boot 启动很快,但是我们还是要自己去重启。
能不能做到有改动,它就会悄无声息地自己把改动的地方重新加载一遍?
答案是肯定的,通过 spring-boot-devtools 就可以实现。
只需要添加 spring-boot-devtools 的依赖即可实现热部署功能,代码如下所示。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
actuator 监控
Spring Boot 提供了一个用于监控和管理自身应用信息的模块,它就是 spring-boot-starter-actuator。
该模块使用起来非常简单,只需要加入依赖即可,代码如下所示。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
编译打包
传统的 Web 项目在部署的时候,是编译出一个 war 包放到 Tomcat 的 webapps 目录下。
而在 Spring Boot 构建的 Web 项目中则打破了这一传统部署的方式,它采用更加简单的内置容器方式来部署应用程序,
只需要将应用编译打包成一个 jar 包,直接可以通过 java–jar 命令启动应用。
在项目的 pom.xml 中增加打包的 Maven 插件,代码如下所示。
<build> <plugins> <!-- 打包插件 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <executable>true</executable> <mainClass>******.className</mainClass> </configuration> </plugin> <!-- 编译插件, 指定JDK版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
mainClass 配置的是我们的启动入口类,配置完成后可以通过 Maven 的 mvn clean package 命令进行编译打包操作。
编译完成后在 target 目录下会生成对应的 jar 包,部署的时候直接调用 java–jar xx.jar 即可启动应用。
以上是关于springBoot读取配置文件多环境热部署打包等基本配置的主要内容,如果未能解决你的问题,请参考以下文章
spring-boot 快速构建热部署自动配置原理配置文件整合SpringMVCredisjunitmybatis打包部署