Spring @Environment典型用法实战案例

 更新时间:2025年06月18日 10:10:26   作者:张紫娃  
在使用Spring框架进行Java开发时,我们经常使用@Value和@Environment注解来注入配置文件中的值,这篇文章主要介绍了Spring @Environment典型用法的相关资料,需要的朋友可以参考下

简单说:Spring 里没有直接叫 @Environment 的注解,更准确说常用的是 @Autowired 注入 Environment 对象,或者结合 @Value 配合 Environment 读取配置 。

支持从以下来源读取

1、application.properties / .yaml

2、JVM 参数(如 -Dkey=value)

3、系统环境变量

4、自定义 @PropertySource

获取Environment实例

使用 @Autowired 注入 Environment 接口实例

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

@Component
public class MyComponent {

    @Autowired
    private Environment environment;  // ✅ 正确方式

    // 使用 environment 对象获取属性或 profile
}

结合 @PropertySource 使用示例

@Configuration
@PropertySource("classpath:custom.properties")
public class AppConfig {

    @Autowired
    private Environment env;

    @Bean
    public MyService myService() {
        String customValue = env.getProperty("custom.key");
        return new MyService(customValue);
    }
}

使用Environment实例

获取配置属性值

String dbUrl = environment.getProperty("spring.datasource.url");

String appName = environment.getProperty("app.name", "defaultAppName"); // 默认值

获取类型安全的属性值

Boolean featureEnabled = environment.getProperty("feature.enabled", Boolean.class, false);

获取当前激活的 Profile

String[] activeProfiles = environment.getActiveProfiles();
for (String profile : activeProfiles) {
    System.out.println("Active Profile: " + profile);
}

判断是否匹配某个 Profile

if (environment.acceptsProfiles("dev")) {
    System.out.println("Running in development mode.");
}

// 或者使用更现代的写法:
if (environment.acceptsProfiles(Profiles.of("dev"))) {
    // dev 环境逻辑
}

获取所有 PropertySources(调试用途)

import org.springframework.core.env.AbstractEnvironment;
import org.springframework.core.env.PropertySource;

((AbstractEnvironment) environment).getPropertySources().forEach(ps -> {
    System.out.println("Property Source: " + ps.getName());
});

常见 PropertySource 包括

1、systemProperties(JVM 参数)

2、systemEnvironment(操作系统环境变量)

3、servletConfigInitParams(Web 配置参数)

4、自定义加载的 @PropertySource

总结

到此这篇关于Spring @Environment典型用法的文章就介绍到这了,更多相关Spring @Environment用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Spring学习之编程式事务管理

    详解Spring学习之编程式事务管理

    本篇文章主要介绍了详解Spring学习之编程式事务管理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Java中Arrays.asList()需要注意的坑

    Java中Arrays.asList()需要注意的坑

    在Java中,我们经常需要将数组转换为List来方便地进行操作,Arrays.asList()方法是一种常见的方式,本文主要介绍了Java中Arrays.asList()需要注意的坑,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • springcloud gateway无法路由问题的解决

    springcloud gateway无法路由问题的解决

    gateway网关的重要作用之一便是进行路由转发工作,下面这篇文章主要给大家介绍了关于springcloud gateway无法路由问题的解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Java用文件流下载网络文件示例代码

    Java用文件流下载网络文件示例代码

    这篇文章主要介绍了Java用文件流的方式下载网络文件,大家参考使用吧
    2013-11-11
  • java中final修饰符的使用方法

    java中final修饰符的使用方法

    这篇文章主要为大家详细介绍了java中final修饰符的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Hibernate的延迟加载的项目实践

    Hibernate的延迟加载的项目实践

    Hibernate延迟加载(Lazy Loading)是一种性能优化技术,仅在需要时加载关联数据,减少初始查询和内存消耗,本文就来介绍一下Hibernate 延迟加载的实现,感兴趣的可以了解一下
    2026-01-01
  • Java文件(io)编程_基于File类的基本用法(必看篇)

    Java文件(io)编程_基于File类的基本用法(必看篇)

    下面小编就为大家带来一篇Java文件(io)编程_基于File类的基本用法(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • SpringCloud中的@FeignClient注解使用详解

    SpringCloud中的@FeignClient注解使用详解

    在Spring Cloud中使用Feign进行服务间的调用时,通常会使用@FeignClient注解来标记Feign客户端接口,这篇文章给大家介绍SpringCloud中的@FeignClient注解使用详解,感兴趣的朋友一起看看吧
    2025-06-06
  • 论Java Web应用中调优线程池的重要性

    论Java Web应用中调优线程池的重要性

    这篇文章主要论述Java Web应用中调优线程池的重要性,通过了解应用的需求,组合最大线程数和平均响应时间,得出一个合适的线程池配置
    2016-04-04
  • 详解Java打包镜像部署

    详解Java打包镜像部署

    这篇文章主要介绍了Java打包镜像部署,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11

最新评论