SpringBoot学习(三)—— 配置文件的读取

博客介绍了在Spring Boot中获取应用配置的方法。因实际使用中不能每次都创建ApplicationContext对象,所以先创建ApplicationContextUtil类、Listener并设置监听,启动项目后可在需要处获取该对象,还能通过getEnvironment读取配置,此外还提到创建JAVA类持有配置。

前言

应用配置的读取需要使用ApplicationContext类,如果是在Application中使用,可以直接创建出来该对象。但是我们实际使用时,不可能每次使用的时候都创建一份。

获取ApplicationContext

创建ApplicationContextUtil

首先,我们创建一个ApplicationContextUtil类,如下:

package com.chenchen.util;

import org.springframework.context.ApplicationContext;

public class ApplicationContextUtil {
    private static ApplicationContext applicationContext;

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public static void setApplicationContext(ApplicationContext applicationContext) {
        ApplicationContextUtil.applicationContext = applicationContext;
    }
    
}

创建Listener

package com.chenchen.util;

import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;

public class StartListener  implements ApplicationListener<ContextRefreshedEvent> {

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        ApplicationContextUtil.setApplicationContext(event.getApplicationContext());
    }

}

设置监听


SpringApplication springApplication = new SpringApplication(WebApplication.class);
springApplication.addListeners(new StartListener());
springApplication.run(args);
        

启动项目,这样我们就可以在需要的地方获取到ApplicationContext对象了。

然后,可以通过getEnvironment获取到环境变量,就可以读取到相应配置了。

创建JAVA类持有一组配置

package com.chenchen.util;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(value = "spring.profiles")
public class Env {
    private String active;

    public String getActive() {
        return active;
    }

    public void setActive(String active) {
        this.active = active;
    }
}

使用

logger.info("当期Redis:" + ApplicationContextUtil.getApplicationContext().getEnvironment().getProperty("spring.redis.host"));
String[] activeProfiles = ApplicationContextUtil.getActiveProfiles();
logger.info("当期运行环境:" + (activeProfiles.length > 0 ? activeProfiles[0] : "无法获取"));

Env env = ApplicationContextUtil.getApplicationContext().getBean(Env.class);
logger.info("当期运行环境:" + env.getActive());
### 如何在Spring Boot中使用配置文件来设置注解参数 #### 配置文件概述 默认情况下,Spring Boot生成的全局配置文件是`application.properties`[^2]。此文件用于存储应用程序的各种属性和配置。 #### 注解与配置文件集成 为了使工具类中的方法能够从配置文件读取参数,在静态上下文中访问这些值,则不仅需要使用`@Value`注解绑定特定键到字段上,还需要采取额外措施确保该字段本身被声明为静态成员变量以便于静态环境中调用[^4]。 下面是一个具体的例子展示如何通过这种方式工作: ```java @Component public class Common { private static String platformID; @Value("${base.param.platformID}") public void setPlatformID(String platformID) { Common.platformID = platformID; } } ``` 这段代码展示了怎样利用`setPlatformID()`方法接收由`@Value`注入来自`application.properties`文件内的`platformID`值,并将其赋给静态域`Common.platformID`。这使得任何其他地方只要能看见这个类就可以直接引用`Common.platformID`而无需实例化对象即可获得所需数据。 #### application.properties 文件示例 对于上述案例而言,对应的`application.properties`应该包含如下条目以提供必要的输入: ```properties base.param.platformID=your_platform_id_value_here ``` 这样就完成了整个流程——即定义了一个可被静态访问的方法级依赖注入机制,它可以从外部资源加载并应用运行时所需的环境敏感型信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值