目录
准备工作
首先在yml文件中,手动添加测试数据
方式1:@value
使用@Value("${}")注解来获取,spel表达式
说明:当spring容器启动时,会加载yml文件,动态实现数据封装,解析到@Value注解的时候,会根据key来查询spring中的map集合来获取value,从而赋值给对应属性。
@RestController //这个注解是@Controller+@ResponseBody的合体 public class JDBCController { @Value("${jdbcTest.ipAddress}") private String ipAddress; @Value("${jdbcTest.ipPort}") private String ipPort; @RequestMapping("/getMsg") public String name() { return ipAddress+"/"+ipPort; } }
运行
方式2:批量为属性赋值(禁止大写)
需要导入依赖包(版本依情况而定 https://mvnrepository.com/search?q=configuration)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.5.2</version>
</dependency>@RestController //这个注解是@Controller+@ResponseBody的合体 @ConfigurationProperties(prefix = "jdbcTest") public class JDBCController2 { /** * 指定前缀,如果属性名称相同,则可以通过set方法为属性赋值 */ private String ipAddress; private String ipPort; public String getIpAddress() { return ipAddress; } public void setIpAddress(String ipAddress) { this.ipAddress = ipAddress; } public String getIpPort() { return ipPort; } public void setIpPort(String ipPort) { this.ipPort = ipPort; } @RequestMapping("/getMsg2") public String name() { return getIpAddress()+"/"+getIpPort(); } }
需要对属性实现set,get方法
运行报错,也就是说用在这个批量赋值,不能有大写,改成小写就对了
整合指定配置文件
@PropertySources
其实一般情况下,yml文件中都是配置第三方的属性,例如mybatis,log,server等,把我们自己的配置放到其他的配置文件中
例如,在sources目录下新建两个yml文件或者properties文件,都可以,这里我用yml文件举例:
分别在这两个yml文件中输入
test.ip=192.168.3.5
test.port=8082和
test2.ip=192.168.3.6
test2.port=8083然后还是同@Value的方式获取
@RestController //这个注解是@Controller+@ResponseBody的合体 @PropertySources({@PropertySource("classpath:/yml/test.yml"),@PropertySource("classpath:/yml/test2.yml")}) public class JDBCController3 { @Value("${test.ip}") private String ipAddress; @Value("${test.port}") private String ipPort; @Value("${test2.ip}") private String ipAddress2; @Value("${test2.port}") private String ipPort2; @RequestMapping("/getMsg3") public String name() { return ipAddress+"/"+ipPort+"--------"+ipAddress2+"/"+ipPort2; } }
运行