Springboot读取配置文件、pom文件及自定义配置文件

2023-11-18

前言

很多人都知道读取配置文件,这是初级做法,上升一点难度是使用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 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Springboot读取配置文件、pom文件及自定义配置文件 的相关文章

随机推荐

  • 毕业设计 免费送源码36412-SSM 环卫人员管理平台,【计算机毕业设计开题选题+程序定制+论文书写+答辩ppt书写-原创(题目+编号)的定制程序】

    本科生毕业论文 设计 题 目SSM环卫人员管理平台 学 院 XXXXX 专业班级 XXXXX 用户姓名 XXXX 指导人才招聘 XXXX 撰写日期 2023年3月 目 录 摘要 1 绪论 1 1背景及意义 1 2国内外研究概况 1 3研究内
  • 列举几个:MAC OS科研软件推荐

    工欲善其事 必先利其器 部分科研狗也会深爱MAC OS虽然他再科研软件上跟WINDOWS相比还有一定差距 但是MAC OS的人性化轻量也是深得人心 这次就为大家推荐MAC OS上的科研软件 1 科学绘图软件 QtiPlot SciDAVis
  • CS5216

    CS5216特点 DP 到HDMI的显示协议转换器 支持Level shifter Repeater两种应用 应用Dongle或Cable市场 将显卡DP 输出 转接为HDMI输出 CS5216参数 符合高达3 0Gbps的HDMI 1 4
  • Linux之prink原理

    我的分析是基于Linux4 15 1 1 看看kernel是如何调用到console初始化函数的 分两条线 a start kernel gt console init gt call con initcall start 去调用放在 co
  • Java 集合、HashMap 底层实现原理

    一 Java 集合概述 Java 集合可分为 Collection 和 Map 两种体系 Collection接口 单列数据 定义了存取一组对象的方法的集合 List 元素有序 指的是存储时 与存放顺序保持一致 可重复的集合 Set 元素无
  • Mybatis---增删改查

    目录 一 添加用户 1 持久层接口方法 2 映射文件 3 测试方法 二 修改用户 1 持久层接口方法 2 映射文件 3 测试方法 三 删除用户 1 持久层接口方法 2 映射文件 3 测试方法 四 查询用户 1 持久层接口方法 2 映射文件
  • Redis查询当前库有多少个 key

    info可以看到所有库的key数量 dbsize则是当前库key的数量 keys 这种数据量小还可以 大的时候可以直接搞死生产环境 dbsize和keys 统计的key数可能是不一样的 如果没记错的话 keys 统计的是当前db有效的key
  • C++面试题之继承

    目录 设计一个类型 不能在外部环境中创建该类的对象 设计一个不能被继承的类 设计一个不能被继承的类 但可以在外部环境创建该类型的对象 设计一个能被继承的类 但不能在外部环境创建该类型的对象 限制派生类对象不可以拷贝和赋值如何实现 设计一个类
  • Git(五):历史提交与远程仓库修改

    目录 4 查看提交历史 4 1 查看日志详细信息 4 2 查看某次提交信息 4 3 查看更改 5 撤销操作 5 1 取消暂存的文件 5 2 撤销对文件的修改 5 3 撤销远程记录 6 远程仓库的使用 6 1 查看远程仓库 6 2 添加远程仓
  • Python自动化部署环境

    import paramiko import sys 创建SSHClient实例对象 ssh paramiko SSHClient 调用方法 表示没有存储远程机器的公钥 允许访问 ssh set missing host key polic
  • 全球及中国冷链物流产业需求前景与投资竞争力研究报告2022版

    全球及中国冷链物流产业需求前景与投资竞争力研究报告2022版 HS HS HS HS HS HS HS HS HS HS HS HS 修订日期 2021年11月 搜索鸿晟信合研究院查看官网更多内容 第一章 冷链物流相关概述 1 1 冷链物流
  • socket传输图片之TCP协议

    在学习socket传输图片之前 我们应该先具备一些基础知识 opencv图片编码和解码 cv2 imencode cv2 imdecode 这两个函数是本教程再传输图片会用到的 个人粗浅的理解是放在内存的中的图片是以图像数据的形式存放的 而
  • 解决gomock报错:doesn‘t match the argument at index 1.

    这个问题在stack Overflow上面有一些解答 但是由于这个报错比较泛 导致仅仅看这个报错信息很难去定位写单测的时候哪里错了 我们需要使用go test v run 函数名 或者直接在vscode上面点击run 我当时发现了有下面的报
  • 逗号分隔String字符串 - 数组 - 集合,相互转换

    1 准备一个逗号分割字符串 String str 小张 小王 小李 小赵 2 逗号分割字符串转换为集合 转换为集合之前会先转换为数组 第一种 先用split将字符串按逗号分割为数组 再用Arrays asList将数组转换为集合 List
  • 暴力破解漏洞

    漏洞概述 暴力破解攻击 又叫字典攻击 是指攻击者系统地组合了所有可能性尝试破解用户的账户名 密码等敏感信息 通常使用自动化脚本或者工具进行暴力破解工具 漏洞产生的主要原因是 1 没有强制用户设置复杂密码 比如密码由数字 字母 特殊字符构成
  • 创建一个maven项目

    先图片的步骤来 2 3 4 5 6 8 9
  • webpack配置指定输出目录和名称记录一下

    const path require path const MiniCssExtractPlugin require mini css extract plugin 表示自定义的系统配置 module exports css 是否使用css
  • 【100%通过率 】【华为OD机试c++/python】实力差距最小总和【2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 游戏里面 队伍通过匹配实力相近的对手进行对战 但是如果匹配的队伍实力相差太大 对于双方游戏体验都不会太好 给定n个队伍的实力值 对其进行两两实力
  • ini文件(QSettings)保存QNetworkCookie(或自定义结构体)——Qt

    前言 之前我用过QSettings写过ini文件作为配置文件 也用过QVariant变量 无论是官方支持的还是自定义的 但是在ini文件中 将QVariant的值作为Value进行保存 是没遇到过 也没做过 这次公司项目中涉及到将Cooki
  • Springboot读取配置文件、pom文件及自定义配置文件

    前言 很多人都知道读取配置文件 这是初级做法 上升一点难度是使用java bean的方式读取自定义配置文件 但是大家很少有知道读取pom文件信息 接下来我都会讲到 正文 笔者还是基于Spring Boot v1 5 8 RELEASE 利用