前言

很多人都知道读取配置文件,这是初级做法,上升一点难度是使用java bean的方式读取自定义配置文件,但是大家很少有知道读取pom文件信息,接下来我都会讲到。

正文

笔者还是基于Spring Boot ::        (v1.5.8.RELEASE),利用的工程有eureka服务和eureka-client客户端服务。

首先教大家一个最简单的读取application.properties文件内容

下图是我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的值已经读取出来了。

接下来演示读取pom文件的信息,笔者只实验了读取部分pom的信息

<?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>
    <parent>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-parent</artifactId>
        <version>Edgware.RELEASE</version>
    </parent>
    <groupId>eureka-client</groupId>
    <artifactId>eureka-client</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

 这是我pom文件中一部分代码,现在我要读取这个项目的版本号,我需要在application.properties文件加一行代码

version=@project.version@
@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

接下来讲解使用java bean的方式读取自定义配置文件 

创建一个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 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐