`
zhoumeng87
  • 浏览: 69587 次
文章分类
社区版块
存档分类
最新评论

SpringBoot学习:获取yml和properties配置文件的内容

阅读更多

(一)xml配置文件:

pom.xml加入依赖:

 
<!-- 支持 @ConfigurationProperties 注解 -->
<!--(官网:www.fhadmin.org)  https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor -->
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <version>${spring-boot.version}</version>
</dependency>
 

在application.yml文件中加上:

 
#自定义的属性和值
myYml:
  simpleProp: simplePropValue
  arrayProps: 1,2,3,4,5
  listProp1:
    - name: abc
      value: abcValue
    - name: efg
      value: efgValue
  listProp2:
    - config2Value1
    - config2Vavlue2
  mapProps:
    key1: value1
    key2: value2
 

使用一个java类获取yml文件的内容:

 
package com.sun.configuration;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 加载yaml配置文件的方法(官网:www.fhadmin.org)
 * Created by sun on 2017-1-15.
 * spring-boot更新到1.5.2版本后locations属性无法使用
 * @PropertySource注解只可以加载proprties文件,无法加载yaml文件
 * 故现在把数据放到application.yml文件中,spring-boot启动时会加载
 */
@Component
//@ConfigurationProperties(locations = {"classpath:config/myProps.yml"},prefix = "myProps")
@ConfigurationProperties(prefix = "myYml")
public class YmlConfig {

    String simpleProp;
    private String[] arrayProps;
    private List<Map<String, String>> listProp1 = new ArrayList<>(); //接收prop1里面的属性值
    private List<String> listProp2 = new ArrayList<>(); //接收prop2里面的属性值
    private Map<String, String> mapProps = new HashMap<>(); //接收prop1里面的属性值

    public String getSimpleProp() {
        return simpleProp;
    }

    //String类型的一定需要setter来接收属性值;maps, collections, 和 arrays 不需要
    public void setSimpleProp(String simpleProp) {
        this.simpleProp = simpleProp;
    }

    public String[] getArrayProps() {
        return arrayProps;
    }

    public void setArrayProps(String[] arrayProps) {
        this.arrayProps = arrayProps;
    }

    public List<Map<String, String>> getListProp1() {
        return listProp1;
    }

    public void setListProp1(List<Map<String, String>> listProp1) {
        this.listProp1 = listProp1;
    }

    public List<String> getListProp2() {
        return listProp2;
    }

    public void setListProp2(List<String> listProp2) {
        this.listProp2 = listProp2;
    }

    public Map<String, String> getMapProps() {
        return mapProps;
    }

    public void setMapProps(Map<String, String> mapProps) {
        this.mapProps = mapProps;
    }
}
 

通过依赖注入就可以获取该对象:

@Autowired
private YmlConfig config;

方法内获取值:

 
ObjectMapper objectMapper = new ObjectMapper();
//测试加载yml文件(官网:www.fhadmin.org)
System.out.println("simpleProp: " + config.getSimpleProp());
System.out.println("arrayProps: " + objectMapper.writeValueAsString(config.getArrayProps()));
System.out.println("listProp1: " + objectMapper.writeValueAsString(config.getListProp1()));
System.out.println("listProp2: " + objectMapper.writeValueAsString(config.getListProp2()));
System.out.println("mapProps: " + objectMapper.writeValueAsString(config.getMapProps()));
 

(二)properties配置文件:

使用@PropertySource注解加载配置文件,该注解无法加载yml配置文件。使用@Value注解获得文件中的参数值

 
package com.sun.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;

/**
 * 加载properties配置文件,在方法中可以获取(官网:www.fhadmin.org)
 * abc.properties文件不存在,验证ignoreReso(官网:www.fhadmin.org)urceNotFound属性
 * 加上encoding = "utf-8"属性防止中文乱码,不能为大写的"UTF-8"
 * Created by sun on 2017-3-30.
 */
@Configuration
@PropertySource(value = {"classpath:/config/propConfigs.properties","classpath:/config/abc.properties"},
        ignoreResourceNotFound = true,encoding = "utf-8")
public class PropConfig {

    // PropertySourcesPlaceholderConfigurer这个bean,
    // 这个bean主要用于解决@value中使用的${…}占位符。
    // 假如你不使用${…}占位符的话,可以不使用这个bean。
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}
获取properties文件参数值有两种方法,一种获得Environment 的对象,第二种就是@Value注解

@Autowired
    private Environment env;
    @Value("${age}")
    String name;


    @RequestMapping("/")
    @ResponseBody
    String home(HttpServletRequest req) throws JsonProcessingException, UnsupportedEncodingException {
        logger.info("测试通过!!!");
        ObjectMapper objectMapper = new ObjectMapper();
        //测试加载yml文件
        System.out.println("simpleProp: " + config.getSimpleProp());
        System.out.println("arrayProps: " + objectMapper.writeValueAsString(config.getArrayProps()));
        System.out.println("listProp1: " + objectMapper.writeValueAsString(config.getListProp1()));
        System.out.println("listProp2: " + objectMapper.writeValueAsString(config.getListProp2()));
        System.out.println("mapProps: " + objectMapper.writeValueAsString(config.getMapProps()));

        //测试加载properties文件
        System.out.println(env.getProperty("name"));//孙凯
        System.out.println(env.getProperty("abc"));//null
        System.out.println(name);//26

        return "Hello World!";
    }
 
 
 
分享到:
评论

相关推荐

    SpringBoot获取yml和properties配置文件的内容

    总的来说,Spring Boot通过`@ConfigurationProperties`和`@Component`注解使得从`properties`或`yml`配置文件中获取和使用配置变得非常简单。开发者只需创建一个Java类,声明属性,并让Spring Boot自动绑定配置,...

    springboot整合quartz定时任务yml文件配置方式

    接下来,我们关注YAML配置文件,通常在`application.yml`或`application.properties`中进行设置。Quartz的配置主要涉及以下几个方面: 1. **配置Quartz实例**:在`spring.quartz`下定义Quartz的相关属性,如是否...

    SpringBoot第 5 讲:SpringBoot+properties配置文件读取

    1. **SpringBoot与Properties配置文件** SpringBoot鼓励使用`application.properties`或`application.yml`作为主要的配置文件,它们位于项目的`src/main/resources`目录下。`application.properties`文件用于存储...

    SpringBoot全局配置文件(properties)与yml配置文件.docx

    Spring Boot支持两种主要的全局配置文件格式:`application.properties` 和 `application.yml`。下面我们将深入探讨这两种配置文件及其特性。 一、`application.properties` 配置文件 1. **修改内嵌容器端口号**:...

    Spring Boot技术知识点:如何获取application.yml配置文件里的相关属性(方法2)

    Spring Boot提供了简单且强大的方式来处理配置文件,特别是通过`application.yml`或`application.properties`。在这个主题中,我们将深入探讨如何利用Java代码从`application.yml`配置文件中获取相关属性,采用的是...

    springboot配置文件yml1

    Spring Boot 提供了两种配置文件类型:properties 和 yml。其中,properties 配置文件是 Spring Boot 的默认配置文件类型,但是它的加载方式较为繁琐,官方并不建议使用。 1.1.2 YML 文件写法 YML 文件是一种...

    springboot 使用yml配置文件给静态变量赋值教程

    在这个教程中,我们将学习如何使用`yml`配置文件为静态变量赋值,特别是针对像数据查询引擎连接工具类这样的场景。 首先,我们需要在`yml`配置文件中定义所需的参数。以`clickhouse`为例,我们会在`application.yml...

    关于springboot 配置文件中属性变量引用方式@@解析

    这种属性应用方式是 field_name=@field_value@。 两个@符号是springboot为...补充知识:springboot项目使用@Value注解获取配置文件中的配置信息 application.yml配置文件得配置信息 web: my_name: mqs tags: aaa,bbb

    Spring Boot技术知识点:如何获取application.yml配置文件里的相关属性(方法1)

    在Spring Boot应用中,`application.yml`文件是一个关键的组件,它用于定义应用程序的配置属性。这个文件通常位于`src/main/resources`目录下,并且被Spring Boot自动加载以提供配置信息。本文将深入探讨如何在代码...

    springboot 在xml里读取yml的配置信息的示例代码

    在上面的XML配置中,我们使用了`&lt;context:property-placeholder&gt;`标签来加载YAML配置文件(`application.yml`),然后通过`${}`占位符引用其中的属性。此外,还可以使用`&lt;springProperty&gt;`标签从Spring的属性源中...

    springboot 多环境配置 yml文件版的实现方法

    SpringBoot 多环境配置是指在不同的环境中(如开发环境、测试环境、生产环境等),使用不同配置文件来管理应用程序的配置。这种配置方式可以使得应用程序的配置更加灵活和可靠。在本文中,我们将介绍使用 YML 文件...

    Springboot中获取yml配置文件中键值对Map的一种实现方法

    在Springboot中,我们一般使用yml或properties文件来管理配置,一般的配置信息,我们只需要在我们的程序中使用@Value注解即可获取到配置信息,但是对于较为复杂的配置,比如键值对形式的配置,我们就需要一些特殊的...

    SpringBoot整合Apollo(Windows)配置中心及使用

    在SpringBoot的配置文件application.properties中,添加Apollo的相关配置,包括服务地址、应用ID等。 ```properties apollo.bootstrap.enabled=true apollo.bootstrap.env=DEV apollo.meta=...

    IDEA WEB项目启动不加载application.properties配置文件.docx

    在IDEA WEB项目中,application.properties配置文件是通过SpringBoot框架来加载的。SpringBoot框架提供了一个自动配置机制,可以自动加载application.properties配置文件。但是,在某些情况下,这个文件可能不会被...

    SpringBoot 多环境配置

    除了`.properties`格式,Spring Boot也支持`.yml`格式的配置文件,其语法更易读,结构更清晰。同时,如果你的项目包含多个模块,可以通过`spring.config.location`属性指定配置文件的位置,这样可以更好地组织和管理...

    SpringBoot+tk.Mybatis整合+yml配置+logback配置

    YAML 是一种易读的数据序列化格式,SpringBoot 默认支持 YAML 与 Properties 配置文件。相比 Properties,YAML 提供更清晰的层次结构。在 SpringBoot 中,`application.yml` 文件用于定义配置属性,如服务器端口、...

    Spring Boot多模块配置文件读取

    - 配置文件的加载顺序为:`application.properties`/`application.yml` &gt; `{profile}-application.properties`/`{profile}-application.yml`。 4. **使用@ConfigurationProperties绑定配置** - Spring Boot提供了...

    SpringBoot yml配置文件注入List和Map

    首先,我们需要在`application.yml`或`application.yaml`配置文件中定义List和Map。List的定义如下: ```yaml myprops: list: - 首页 - 主业务类型页面 - 人脸页面 - 子业务类型页面 - 产权证号录入页面 # ....

    SpringBoot消息国际化配置实现过程解析

    SpringBoot 项目中默认将消息配置文件放在 classpath:message.properties 中,如果需要自定义消息配置文件,需要在 application.properties 或 application.yml 中设置 spring.messages.basename 的值。 在 ...

Global site tag (gtag.js) - Google Analytics