一.首先创建一个SpringBoot项目
项目结构:
创建pom文件,映入maven工程依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.csrcb</groupId>
<artifactId>spring_static</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
二、创建配置文件
在resource目录下,创建配置文件application.yml,创建几个不同环境的application-dev,application-sit、application-prod.yml的配置文件,稍后做测试使用,看是否加载不同环境下的配置参数的值
application.yml很简单就一个端口号的配置:
在application-dev.yml(开发环境的配置参数的值)、以及sit(测试)、uat(验证)、prod(生产)环境设置一些值
不同环境下的测试的配置参数的值不一致,为了测试参数名设置相同下,是否取得对应运行环境的值
三.创建实体类
1.创建加载配置文件的配置类
/**
* @Classname TestConfig
* @Description 加载配置文件的配置类
* @Date 2020/6/16 16:28
* @Created by gangye
*/
@Configuration
@Data
public class TestConfig {
@Value("${ftp.username}")
private String username;
@Value("${ftp.passwd}")
private String passwd;
@PostConstruct
public void init(){
ClientUtil.setConfigInfo(this);
}
}
2.创建工具类,工具类获得配置类的参数值
/**
* @Classname ClientUtil
* @Description 工具类,将配置文件的数据通过config引入到静态变量中
* @Date 2020/6/16 16:29
* @Created by gangye
*/
@Slf4j
public class ClientUtil {
private static String USERNAME;
private static String PASSWD;
public static void setConfigInfo(TestConfig testConfig) {
ClientUtil.USERNAME = testConfig.getUsername();
ClientUtil.PASSWD = testConfig.getPasswd();
}
public static String getValue(){
log.info("获得配置文件的username的值:{}",USERNAME);
return USERNAME;
}
}
3.创建路由,模拟调用
/**
* @Classname controller
* @Date 2020/6/16 16:35
* @Created by gangye
*/
@RestController
@RequestMapping(value = "/test")
public class TestController {
@GetMapping("/getvalue")
public String getValue(){
return ClientUtil.getValue();
}
}
4.创建启动类,在启动类中添加Bean,为了防止启动时配置类的@Value注解找不到配置文件中的值,一个配置文件找不到继续找
/**
* @Classname AppStart
* @Description 启动类
* @Date 2020/6/16 16:26
* @Created by gangye
*/
@SpringBootApplication
public class AppStart {
public static void main(String[] args) {
SpringApplication.run(AppStart.class,args);
}
}
启动时添加对应的运行环境设置
-Dspring.profiles.active=sit
若springboot版本低可能会出现java.lang.IllegalArgumentException: Could not resolve placeholder ‘username’ in value “${ftp.username}”这样的报错
解决办法:在启动类中添加下面的代码
/**
* Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder ‘name’ in value “${name}”
* @Description 为了防止启动时配置类的@Value注解找不到配置文件中的值,一个配置文件找不到继续找
* @Date 2020年6月17日14:40:08
* @return
*/
@Bean
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer(){
PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();
c.setIgnoreUnresolvablePlaceholders(true);
return c;
}
再次启动环境(sit下)
在浏览器中输入:http://localhost:8000/test/getvalue
再指定prod环境下的运行
使用浏览器请求路由
关键使用了@Value注解以及@PostConstruct注解
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/12314.html