SpringBoot获取配置的三种方式

分类:
JAVA
标签:
SpringBoot
作者:
何鑫
创作时间:
2019/07/25 15:13:04

摘要:SpringBoot获取配置的三种方式

在实际工作中,我们可能会需要获取SpringBoot的配置信息,包括自定义的配置,那么我们有哪些方式来获取这些配置呢?

环境准备

我们首先需要一个SpringBoot的基础工程,可以从这里快速获取 ,注意依赖我们加上Spring Web Starter。

生成基础工程后,解压后导入到IDE。

我们先预设一个自定义配置信息,在application.properties中新增一个配置:

myconfig.name=hexin

我们现在需要做的就是读取这个配置。

新建一个Controller,编码如下:

package cn.besthexin.lab.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController // 等于@Controller + @ResponseBody
public class LabController {

    @GetMapping("/hello")
    public String hello() {
        return "config";
    }

}

这样方便我们访问localhost:8080/hello能直接获取配置信息。

第一种 使用Environment

获取配置的第一种方式,使用Environment:

package cn.besthexin.lab.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController // 等于@Controller + @ResponseBody
public class LabController {

    @Autowired
    private Environment environment;

    @GetMapping("/hello")
    public String hello() {
        return environment.getProperty("myconfig.name");
    }

}

注入Enviroment,使用其getProperty方法就可以获取配置信息啦。

访问http://localhost:8080/hello,输出:hexin,获取配置信息成功。

第二种 使用@Value

package cn.besthexin.lab.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController // 等于@Controller + @ResponseBody
public class LabController {

    @Value("${myconfig.name}")
    private String name;

    @GetMapping("/hello")
    public String hello() {
        return name;
    }

}

访问http://localhost:8080/hello,输出:hexin,获取配置信息成功。

第三种 自定义配置类

新建配置类:

package cn.besthexin.lab.config;

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

@Component
@ConfigurationProperties(prefix = "myconfig")
public class MyConfig {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

使用注解@ConfigurationProperties(prefix = "配置前缀")

用@Component注解把该对象交给Spring管理。

再来测试一下:

package cn.besthexin.lab.controller;

import cn.besthexin.lab.config.MyConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController // 等于@Controller + @ResponseBody
public class LabController {

    @Autowired
    private MyConfig myConfig;

    @GetMapping("/hello")
    public String hello() {
        return myConfig.getName();
    }

}

注入该配置类,调用对应方法即可获取配置信息。

访问http://localhost:8080/hello,输出:hexin,获取配置信息成功。

以上就是在SpringBoot中获取配置信息的三种方法,你学会了吗?

发表评论

温馨提示: 评论先审核后发布, 请勿发表不良言论

所有评论