(005)Spring Boot之读取配置文件

  springboot的默认配置文件是application.properties或者application.yml。读取配置文件有以下两种方式

  1、注入Environment对象,用Environment对象获取

  2、使用Value注解

  获取的值默认都是字符串类型,使用Value注解时,自动转化类型,使用Environment对象时,指定类,如下:

  pom.xml

<?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>

    <groupId>com.edu.spring</groupId>
    <artifactId>springboot</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>springboot</name>
    <!-- FIXME change it to the project‘s website -->
    <url>http://www.example.com</url>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.1.6.RELEASE</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

</project>

  UserConfig.java

package com.edu.spring.springboot;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
public class UserConfig {

    @Autowired
    private Environment environment;

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

    @Value("${local.port}")
    private Integer port2;

    public void show(){
        System.out.println("local.ip= "+environment.getProperty("local.ip"));
        System.out.println("local.port= "+environment.getProperty("local.port",Integer.class));
        System.out.println("local.port= "+port);
        System.out.println("local.port= "+port2);
    }
}

  App.java

package com.edu.spring.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class App
{
    public static void main( String[] args )
    {

        ConfigurableApplicationContext context=SpringApplication.run(App.class, args);
        System.out.println(context.getEnvironment().getProperty("local.ip"));
        context.getBean(UserConfig.class).show();
        context.close();
    }
}

  运行结果如下:

  假如在配置文件中没对应的属性,取值的时候可以指定默认值,即配置文件中存在属性,取配置文件中的,否则取指定的。如下:

  UserConfig.java

package com.edu.spring.springboot;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
public class UserConfig {

    @Autowired
    private Environment environment;

    @Value("${name:你好}")
    private String name;

    public void show(){
        System.out.println("name= "+environment.getProperty("name","你好"));
        System.out.println("name= "+name);
    }
}

  App.java

package com.edu.spring.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class App
{
    public static void main( String[] args )
    {

        ConfigurableApplicationContext context=SpringApplication.run(App.class, args);
        context.getBean(UserConfig.class).show();
        context.close();
    }
}

  运行结果如下:

1

原文地址:https://www.cnblogs.com/javasl/p/11827832.html

时间: 2024-10-07 11:47:33

(005)Spring Boot之读取配置文件的相关文章

【转】spring boot mybatis 读取配置文件

spring boot mybatis 配置整理 一.加载mybatis的配置 1.手写配置,写死在代码里 import java.io.IOException; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ibatis.

spring boot中读取配置文件的两种方式

application.properties test.name=测试 test.url=www.test.com [email protected]注解 在controller里可以这样直接调用 @Value("${test.name}") private String name; @Value("${test.url}") private String url; [email protected](prefix="test") 新建一个Con

Spring Boot加载配置文件的完整步骤

这篇文章主要给大家介绍了关于Spring Boot加载配置文件的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 前言 本文针对版本2.2.0.RELEASE来分析SpringBoot的配置处理源码,通过查看SpringBoot的源码来弄清楚一些常见的问题比如: SpringBoot从哪里开始加载配置文件? SpringBoot从哪些地方加载配置文件? SpringBoot是如何支持yaml和proper

spring boot 无法读取application.properties问题

spring boot 无法读取application.properties问题 https://bbs.csdn.net/topics/392374488 https://www.cnblogs.com/mr-wuxiansheng/p/6891925.html 关于spring获取webApplication.getBean多种途径和简单解释 https://blog.csdn.net/superdog007/article/details/43482427?readlog 原文地址:htt

Spring Boot的properties配置文件读取

我在自己写点东西玩的时候需要读配置文件,又不想引包,于是打算扣点Spring Boot读取配置文件的代码出来,当然只是读配置文件没必要这么麻烦,不过反正闲着也是闲着,扣着玩了.具体启动过程以前的博客写过Spring Boot启动过程(一),这次入口在SpringApplication类中: private ConfigurableEnvironment prepareEnvironment( SpringApplicationRunListeners listeners, Application

Spring Boot加载配置文件

问题1:Spring如何加载配置,配置文件位置? 1.默认位置: Spring Boot默认的配置文件名称为application.properties,SpringApplication将从以下位置加载application.properties文件,并把它们添加到Spring Environment中: 当前目录下的/config子目录, 当前目录. 一个classpath下的/config包 classpath根路径(root) 这个列表是按优先级排序的(列表中位置高的将覆盖位置低的).并

spring boot的application配置文件

  上次我们已经对这个文件见过面了,并且对他进行了一些简单的配置.它有两种配置方式,一个是application.properties,一个是application.yml文件,需要记住,当两个文件都存在的时候,spring boot默认使用的是application.properties文件.这个配置文件的名字不能变,就是application.但是在实际项目中,我们会有多个环境,每个环境中都有自己不一样的信息,这时候我们就需要用到多文件配置. 当时用多文件配置的时候,我们可以根据情况建立多个

关于Spring boot中读取属性配置文件出现中文乱码的问题的解决(针对application.properties)

两种方法: 方法一:在配置文件中设置中文编码: banner.charset=utf-8server.tomcat.uri-encoding=UTF-8spring.http.encoding.charset=UTF-8spring.http.encoding.enabled=truespring.http.encoding.force=truespring.messages.encoding=UTF-8 方法二: 设置idea的编码格式 原文地址:https://www.cnblogs.com

spring$占位符读取配置文件值

(<!-- 获取properties数据源文件 方式一 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">           <property name="locations">               <list>