热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot如何读取自定义外部属性详解_java

这篇文章主要给大家介绍了关于SpringBoot如何读取自定义外部属性的相关资料,这个功能实现介绍的很详细,

测试的环境:Spring Boot2 + Maven +lombok

准备需要用到的基础类:

public class People {
    private String name;
    private String address;
    private String phone;
}

准备默认的配置文件application.properties,内容如下

people.default.name=zs
people.default.address=ccc
people.default.phOne=122122

准备自定义配置文件people.properties,内容如下

people.default.name=test-zs
people.default.address=test-address
people.default.phOne=111111

准备测试类

@RestController
public class PeopleController {

    @Autowired
    private People people;

    @RequestMapping("/test1")
    public void test1(){
        System.out.println(people);
    }
}

第一种情况:读取默认配置文件中的自定义属性(如application.properties)

1、直接在指定类读取文件属性

@Data
//@Setter
@ToString
@Configuration
@ConfigurationProperties(prefix = "people.default")
public class People {
    private String name;
    private String address;
    private String phone;
}

测试结果:

注意:类用到了lombok的注解(@Data)或者使用@Setter注解。所以有getter/setter。如果没有使用注解,则需要setter方法才能读取成功。

2、配合@Vaule读取文件属性

@Configuration
public class PeopleConfigrution {

    @Value("${people.default.name}")
    private String name;
    @Value("${people.default.address}")
    private String address;
    @Value("${people.default.phone}")
    private String phone;

    @Bean
    public People initPeople(){
        People people=new People();
        people.setName(name);
        people.setPhone(phone);
        people.setAddress(address);
        return people;
    }
}

测试结果:

3、使用Environment读取

@Configuration
public class PeopleConfigrution {

    @Autowired
    private Environment environment;

    @Bean
    public People initPeople(){
        People people=new People();
        people.setName(environment.getProperty("people.default.name"));
        people.setPhone(environment.getProperty("people.default.phone"));
        people.setAddress(environment.getProperty("people.default.address"));
        return people;
    }
}

测试结果:

第二种情况:读取自定义文件中的属性(如people.properties)

需指定读取文件的位置,可使用@PropertySource注解指定,如

@Data
//@Setter
@ToString
@Configuration
@PropertySource("classpath:people.properties")  //指定读取文件位置,可与读取默认文件第一种方式相比。
@ConfigurationProperties(prefix = "people.default")
public class People {
    private String name;
    private String address;
    private String phone;
}

测试结果:

以上列举的不是全部方式,加载文件的方式还有其他方式,这篇只是列举常用的方式。

总结


推荐阅读
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • Java 类成员初始化顺序与数组创建
    本文探讨了Java中类成员的初始化顺序、静态引入、可变参数以及finalize方法的应用。通过具体的代码示例,详细解释了这些概念及其在实际编程中的使用。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 图数据库中的知识表示与推理机制
    本文探讨了图数据库及其技术生态系统在知识表示和推理问题上的应用。通过理解图数据结构,尤其是属性图的特性,可以为复杂的数据关系提供高效且优雅的解决方案。我们将详细介绍属性图的基本概念、对象建模、概念建模以及自动推理的过程,并结合实际代码示例进行说明。 ... [详细]
author-avatar
书友76075933
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有