当前位置:   article > 正文

《SpringBoot实战篇》静态方法使用配置文件中的参数_static方法使用配置文件中的配置

static方法使用配置文件中的配置

一、前景概要

Spring Boot是一个用于快速开发的微服务框架。在开发Spring Boot应用时,我们通常需要配置一些外部参数,例如数据库连接信息、端口号等。Spring Boot提供了多种方式来加载这些配置文件参数。在本文中,我们将介绍如何在Spring Boot应用中加载配置文件参数,并且在静态方法中可以调用这些参数。

二、配置参数

在application.properties文件中添加参数

myapp.apikey=abcd-12345678
  • 1

或是在application.yml文件中添加参数

myapp:
 apikey: abce-12345678
  • 1
  • 2

三、将参数加载出来的多个方法

在Spring Boot中,加载配置文件中的参数有以下几种方法:

  1. 使用@Value注解加载:

    在需要加载配置文件中的参数的类或方法上,使用@Value注解注入需要的配置参数。例如:

    @Value("${myapp.apikey}")
    private String apiKey;
    
    • 1
    • 2

    这里通过使用${}语法,注入了myapp.apikey参数的值到apiKey变量中,这个参数可以通过在application.propertiesapplication.yml文件中定义。

  2. 使用Environment接口加载:

    在需要获取配置文件中的参数的类中,使用Environment接口的方法获取需要的参数。例如:

    @Autowired
    private Environment env;
    
    public void myMethod() {
        String apiKey = env.getProperty("myapp.apikey");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里通过@Autowired注解把Environment接口注入到类中,然后通过getProperty()方法获取需要的参数。

  3. 使用@ConfigurationProperties注解加载:

    定义一个与配置文件对应的实体类,然后通过@ConfigurationProperties注解注入该实体类即可。例如:

    @Component
    @ConfigurationProperties(prefix = "myapp")
    public class MyProperties {
    
        private String apikey;
    
        // getter and setter
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    MyProperties类上,使用@ConfigurationProperties注解指定了配置文件中的前缀为myapp,然后在需要注入该类的位置使用@Autowired注解即可。

四、将加载出来的参数加载到静态变量里面

package com.example.udpDemo.common.utils;

import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @author wangdachuan
 * @version 1.0
 * @date 2023/5/5 22:30
 **/
@Component
public class EnvironmentUtil {

    public static String appKey;


    @Value("${app.key}")
    private String tmpAppKey;

    /**
     * 初始化方法,使用@PostConstruct注解能够在对象通过@Component初始化后调用该方法
     * ,将通过@Value加载的值赋值给静态变量
     */
    @PostConstruct
    private void init(){
        appKey = tmpAppKey;
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

在上面的这个类中,通过几个注解将配置的参数进行读取并使用。

1.在类上使用@Component,是EnvironmentUtil会被自动实例化成一个Bean,并且通过DI注入到其他的Bean中。会在项目启动时加载该类。

2.在定义的私有变量tmpName等参数上通过@Value(“${}”)将配置文件中的参数加载到变量中。

3.在set方法上通过@PostConstruct注解,在对象被初始化之后,通过反射机制自动调用该方法。通过该方法将加载的参数赋值给静态变量。

五、使用

package com.example.udpDemo.controller;
import com.example.udpDemo.common.utils.EnvironmentUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author wangdachuan
 * @version 1.0
 * @date 2023/5/5 22:37
 **/
@RestController
@RequestMapping("/env")
public class EnvironmentController {


    /**
     * 获取配置文件中的参数
     *
     * @return {@link String}
     */
    @GetMapping("/getAppKey")
    public String getAppKey(){
        return EnvironmentUtil.appKey;
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

通过直接调用EnvironmentUtil的静态变量,我们就可以获取到配置文件中的参数。

六、源码地址:

git地址: https://gitee.com/wyc_01/netty-udp-demo.git

包路径: com/example/udpDemo/common/utils/EnvironmentUtil.java

六、总结

在本文中,我们使用了@Component、@Value和@PostConstruct三个注解,将配置参数加载到静态变量中。虽然这种方法很方便,但我们也可以通过其他方式来实现配置参数的加载。欢迎大家留言讨论。

希望大家多多关注+点赞+收藏

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/798479
推荐阅读
相关标签