标签:hello 打破 end app control 应用信息 package 读取 生产环境
在以前的项目中我们主要在 XML 文件中进行框架配置,业务的相关配置会放在属性文件中,
然后通过一个属性读取的工具类来读取配置信息。
在 Spring Boot 中我们不再需要使用这种方式去读取数据了。
Spring Boot 中的配置通常放在 application.properties 中,读取配置信息非常方便,总共分为 3 种方式。
可以通过 Environment 的 getProperty 方法来获取想要的配置信息,代码如下所示。
@RestController
public class HelloController {
// 注入对象
@Autowired
private Environment env;
@GetMapping("/hello")
public String hello() {
// 读取配置
String port = env.getProperty("server.port");
return port;
}
}
可以注入具体的配置信息,代码如下所示。
@RestController
public class HelloController {
// 注入配置
@Value("${server.port}")
private String port;
@GetMapping("/hello")
public String hello() {
return port;
}
}
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
在平时的开发中,项目会被部署到测试环境、生产环境,但是每个环境的数据库地址等配置信息都是不一样的。
通过 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>
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读取配置文件、多环境、热部署、打包等基本配置
标签:hello 打破 end app control 应用信息 package 读取 生产环境
原文地址:https://www.cnblogs.com/kraviswy/p/13404155.html