ITPub博客

首页 > 架构设计 > 软件结构 > spring cloud+spring boot 电子商务spring boot获取配置文件的属性

spring cloud+spring boot 电子商务spring boot获取配置文件的属性

原创 软件结构 作者:gung123 时间:2020-01-14 12:51:09 0 删除 编辑

在项目开发中,有时候需要从配置文件中读取属性值,spring-boot对此方面也提供了较好的支持。

spring-boot对此方面也提供了较好的支持。

了解springcloud架构可以加求求:三五三六二四七二五九,比如我们的配置文件是这样的

server:
  port: 8888
  tomcat:
    uri-encoding: UTF-8
# 配置微服务的地址
url:
  # 订单微服务的地址
  orderUrl: http://localhost:8002
  #微服务地址2
  taskUrl: http://localhost:8003
  #微服务地址3
  customerUrl: http://localhost:8004
 
  那么我们如何获取呢?
第一种方式:直接使用@Value("${name}")注解就可以将配置文件中的属性值注入进来。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
/**
 * 描述:微服务地址调用
 * @author Administrator
 * @create 2018-10-18 16:11
 */
@RestController
@RequestMapping("/url")
public class ConfigController {
 
    private static final Logger LOGGER = LoggerFactory.getLogger(ConfigController.class);
 
    //在属性上使用 @Value 注解即可获取到配置文件中的配置信息
    @Value("${url.orderUrl}")
    private String orderUrl;
 
    @RequestMapping("/orderUrl")
    public String testConfig() {
        LOGGER.info("=====获取的订单服务地址为:{}", orderUrl);
        return orderUrl;
    }
}
第二种方式:多个配置信息的情形,列入我们有多个微服务地址,这样的话我们就还可以简单一些。
1 引入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
2 定义一个保存服务url的类:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
/**
 * 描述:微服务地址
 * @author Administrator
 * @create 2018-10-18 16:28
 */
@Component
@ConfigurationProperties(prefix = "url")
public class ServiceUrl {
    private String orderUrl;
    private String taskUrl;
    private String customerUrl;
    public String getOrderUrl() {
        return orderUrl;
    }
    public void setOrderUrl(String orderUrl) {
        this.orderUrl = orderUrl;
    }
 
    public String getTaskUrl() {
        return taskUrl;
    }
 
    public void setTaskUrl(String taskUrl) {
        this.taskUrl = taskUrl;
    }
 
    public String getCustomerUrl() {
        return customerUrl;
    }
    使用 @ConfigurationProperties 注解并使用 prefix 指定一个前缀,那么该类中的属性名就是配置中去掉前缀后的名字,一一对应即可。即:前缀名 + 属性名就是配置文件中定义的 key。同时,该类上面需要加上 @Component 注解,把该类作为组件放到 Spring 容器中,让 Spring 去管理,我们使用的时候直接注入即可。
然后我们直接使用@Resource注入就可以使用了
import com.ruifeng.demo.common.ServiceUrl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
 
/**
 * 描述:微服务地址调用
 * @author Administrator
 * @create 2018-10-18 16:11
 */
@RestController
@RequestMapping("/url")
public class ConfigController {
 
    private static final Logger LOGGER = LoggerFactory.getLogger(ConfigController.class);
 
 
    @Resource
    private ServiceUrl microServiceUrl;
 
    @RequestMapping("/config")
    public String testConfigs() {
        LOGGER.info("=====获取的订单服务地址为:{}", microServiceUrl.getOrderUrl());
        LOGGER.info("=====获取的任务服务地址为:{}", microServiceUrl.getTaskUrl());
        LOGGER.info("=====获取的客户服务地址为:{}", microServiceUrl.getCustomerUrl());
 
        return "success";
    }
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69952307/viewspace-2673269/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-11-01

  • 博文量
    50
  • 访问量
    19462