很多人都知道读取配置文件,这是初级做法,上升一点难度是使用java bean的方式读取自定义配置文件,但是大家很少有知道读取pom文件信息,接下来我都会讲到。
笔者还是基于Spring Boot :: (v1.5.8.RELEASE),利用的工程有eureka服务和eureka-client客户端服务。
下图是我eureka-client服务全部的配置
eureka.client.service-url.defaultZone=http://admin:admin@localhost:1111/eureka/
server.port=8762
spring.application.name=eureka-client
spring.zipkin.base-url=http://localhost:9411
management.security.enabled=true
#启用shutdown
endpoints.shutdown.enabled=true
#禁用密码验证
endpoints.shutdown.sensitive=true
#验证用户名
security.user.name=admin
#验证密码
security.user.password=admin
#角色
management.security.role=SUPERUSER
#指定shutdown endpoint的路径
endpoints.shutdown.path=/custompath
#也可以统一指定所有endpoints的路径`management.context-path=/manage`
#指定管理端口和IP
management.port=8081
management.address=127.0.0.1
配置controller,使用 @Value
@Value("${management.address}")
private String address;
@GetMapping("/ClientService/name")
public String test(@NotBlank(message = "name 不能为空") @RequestParam("name") String name) {
if (name.equals("1")) {
throw new ParameterServiceException("这里填写错误代码,规范应是一个枚举", "描述当前错误原因");
}
return address;
}
访问http://localhost:8762/ClientService/name?name=2
可以看到配置文件management.address的值已经读取出来了。
4.0.0
org.springframework.cloud
spring-cloud-starter-parent
Edgware.RELEASE
eureka-client
eureka-client
1.0-SNAPSHOT
jar
UTF-8
UTF-8
1.8
这是我pom文件中一部分代码,现在我要读取这个项目的版本号,我需要在application.properties文件加一行代码
[email protected]@
@Value("${version}")
private String val;
@GetMapping("/ClientService/name")
public String test(@NotBlank(message = "name 不能为空") @RequestParam("name") String name) {
if (name.equals("1")) {
throw new ParameterServiceException("这里填写错误代码,规范应是一个枚举", "描述当前错误原因");
}
return val;
}
访问http://localhost:8762/ClientService/name?name=2
创建一个javaBean::DefineEntity
package com;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* @author yanlin
* @version v1.3
* @date 2018-10-22 下午12:38
* @since v8.0
**/
@Component
@ConfigurationProperties(prefix = "defineTest")
@PropertySource("classpath:define.properties")
public class DefineEntity {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "DefineEntity{" +
"name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
创建一个自定义的配置文件名字叫define.properties,内容如下
defineTest.name=kelly
defineTest.password=helloKelly
配置你的controller
@Autowired
DefineEntity defineEntity;
@GetMapping("/ClientService/name")
public String test(@NotBlank(message = "name 不能为空") @RequestParam("name") String name) {
if (name.equals("1")) {
throw new ParameterServiceException("这里填写错误代码,规范应是一个枚举", "描述当前错误原因");
}
return defineEntity.toString();
}
启动,访问http://localhost:8762/ClientService/name?name=2,结果如下,大功告成啦,是不是so easy!!!
注:对本文有异议或不明白的地方微信探讨,wx:15524579896