Spring中读取配置文件的五种方式

 更新时间:2024年10月11日 11:29:58   作者:A杨宽A  
在使用spring或springboot项目开发中,难免会涉及到读取配置文件的各种配置参数的情况,因为当项目的规模上去之后,在单个配置文件中维护所有的配置信息很难满足实际的需要,所以本文给大家介绍了Spring读取配置文件多种方式,需要的朋友可以参考下

Spring中读取配置文件的五种方式

  1. @Value:只能读取单个配置项
  2. @ConfigurationProperties:可以一次性读取多个配置项,将多个配置项转换为Bean对象。需要配合prefix使用。
  3. @PropertySource+@Value:获取自定义配置文件的单个配置项。
  4. @PropertySource+@ConfigurationProperties:获取自定义配置文件的多个配置项。
  5. Environment的getProperty方法获取,很少使用。

举例说明:

第一种:@Value注解方式获取

application.yml

server:
  port: 9201

取值方式:

    @Value("${server.port}")
    private String port;

第二种:@ConfigurationProperties注解方式获取

application.yml

student:
  name: 张三
  age: 18

取值方式:

@Configuration
@ConfigurationProperties(prefix = "student")
public class CaptchaProperties{
	private String name;
	private Integer age;
	...
}

注:需要配和@Component使用,本文中使用的@Configuration,我们查看Configuration注解会发现它使用了@Component注解

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
...
}

第三种:@PropertyResource + @Value注解方式获取,可读取自定义配置文件。只支持读取.properties类型的配置文件,yml类型的配置文件需要自定义。

student.properties

student.name = 张三
student.age = 18

取值方式:

@Component
@PropertyResouce(value = "classpath:student.properties")
public class Student implements Serializable{
	@Value("${student.name}")
	private String name;
	
	@Value("${student.age}")
	private Integer age;
	...
}

第四种:@PropertyResource + @ConfigurationProperties注解方式获取,可读取自定义配置文件。只支持读取.properties类型的配置文件,yml类型的配置文件需要自定义。

student.properties

student.name = 张三
student.age = 18

取值方式:

/**
 * @Component标识为是Spring的一个组件,只有容器组件,容器才会为ConfigurationProperties提供此注入共    	
 * 功能
 */
@Component
@PropertyResouce(value = "classpath:student.properties")
@ConfigurationProperties(prefix = "student")
public class Student implements Serializable{
	private String name;
	private Integer age;
	...
}

第五种:Environment方式读取,基本很少使用

application.yml

student:
  name: 张三
  age: 18

取值方式:

...
@Autowired
private Environment env;

public String getUserName(){
	return env.getProperty("student.name");
}
...

以上就是Spring中读取配置文件的五种方式的详细内容,更多关于Spring读取配置文件的资料请关注脚本之家其它相关文章!

相关文章

  • Java基础总结之Thymeleaf详解

    Java基础总结之Thymeleaf详解

    Thymeleaf是一种现代的基于服务器端的Java模板引擎技术,也是一个优秀的面向Java的XML、XHTML、HTML5页面模板,它具有丰富的标签语言、函数和表达式,在使用Spring Boot框架进行页面设计时,一般会选择Thymeleaf模板,需要的朋友可以参考下
    2021-05-05
  • JVM中对象的创建与OOP-Klass模型

    JVM中对象的创建与OOP-Klass模型

    这篇文章主要介绍了JVM中对象的创建与OOP-Klass模型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 深入理解HashMap各个方法的源码

    深入理解HashMap各个方法的源码

    这篇文章主要介绍了深入理解HashMap各个方法的源码,HashMap初始容量不能为负数,若初始容量大于最大容量,则让它等于最大容量,负载因子必须大于0,并且传入的initialCapacity不是HashMap的容量大小,需要的朋友可以参考下
    2023-12-12
  • Spring @Bean注解的使用场景与案例实现

    Spring @Bean注解的使用场景与案例实现

    随着SpringBoot的流行,我们现在更多采用基于注解式的配置从而替换掉了基于XML的配置,所以本篇文章我们主要探讨基于注解的@Bean以及和其他注解的使用
    2023-03-03
  • Java中的模板模式说明与实现

    Java中的模板模式说明与实现

    这篇文章主要介绍了Java中的模板模式说明与实现,模板方法模式,又叫模板模式,在一个抽象类公开定义了执行它的方法的模板,它的子类可以更需要重写方法实现,但可以成为典型类中定义的方式进行,需要的朋友可以参考下
    2023-10-10
  • Springboot整合mqtt实现软硬件通信的示例代码

    Springboot整合mqtt实现软硬件通信的示例代码

    本文介绍了如何使用Spring Boot整合MQTT协议,实现物联网软硬件通信, MQTT是一种轻量级的消息队列遥测传输协议,适用于物联网设备通信和远程监控,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • Nacos封装通用HttpClient详解

    Nacos封装通用HttpClient详解

    这篇文章主要介绍了Nacos封装通用HttpClient用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • SpringBoot+Vue+Redis实现单点登录(一处登录另一处退出登录)

    SpringBoot+Vue+Redis实现单点登录(一处登录另一处退出登录)

    小编接到一个需求,需要实现用户在浏览器登录后,跳转到其他页面,当用户在其它地方又登录时,前面用户登录的页面退出登录,这篇文章主要介绍了SpringBoot+Vue+Redis实现单点登录,需要的朋友可以参考下
    2019-12-12
  • IDEA创建Spring Boot Web项目完整图文教程

    IDEA创建Spring Boot Web项目完整图文教程

    在软件开发的浩瀚海洋中,SpringBoot以其独特的魅力和强大的功能,为开发者开辟了一条通往高效、便捷开发之路,这篇文章主要介绍了IDEA创建Spring Boot Web项目的相关资料,需要的朋友可以参考下
    2026-04-04
  • 关于JFormDesigner的安装及破姐超详细教程

    关于JFormDesigner的安装及破姐超详细教程

    JFormDesigner是一种先进的图形用户界面Swing 的设计工具(非开源),具有一个独立的开发工具产品和基于不同开发工具如Eclipse、NetBeans等的开发插件,本文给大家介绍JFormDesigner安装破解教程,感兴趣的朋友一起看看吧
    2023-12-12

最新评论