【Spring boot 读取系统环境变量】

这篇具有很好参考价值的文章主要介绍了【Spring boot 读取系统环境变量】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring boot 读取系统环境变量
凡是被 Spring 管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到
系统环境变量和 application 配置文件中的变量。
com.hpit.sb.environment.MyEnvironment
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
/**
* TODO 读取spring以及系统环境变量 主要是@Configuration,
实现接口:EnvironmentAware就能获取到系统
环境信息;
*
*
*/
@Configuration
public class MyEnvironment implements EnvironmentAware {
@Value ( "${spring.datasource.url}" ) // 使用el表达式读取spring主配置文件
private String jdbcUrl ;
private Logger logger = Logger. getLogger (getClass());
@Override
public void setEnvironment(Environment environment ) {
// springEL表达式获取的值
logger .info( "springel表达式获取的值:
" + jdbcUrl );
// 获取系统属性:
logger .info( "JAVA_HOME" + environment .getProperty( "JAVA_HOME" ));
// 获取spring主配置文件中的属性
logger .info( "spring.datasource.url:" + environment .getProperty( "spring.datasource.url" ));
// 获取前缀是“spring.datasource”的所有属性值
RelaxedPropertyResolver propertyResolver = new RelaxedPropertyResolver( environment ,
"spring.datasource." );
logger .info( "通过前缀获取的url:" + propertyResolver .getProperty( "url" ));
logger .info( "通过前缀获取的driverClassName:" + propertyResolver .getProperty( "driverClassName" ));
}
}
其中 application.properties 文件信息是:
spring.mvc.view.prefix= /WEB-INF/views/
spring.mvc.view.suffix= .jsp
spring.datasource.url= jdbc:mysql://localhost:3306/spring
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.jdbc.Driver
启动应用,查看日志输出:
@Controller @Service 等被 Spring 管理的类都支持,注意重写的方法 setEnvironment 是在系统启动的时候被
执行。
或者如下 Controller:
com.hpit.sb.controller.SystemEnvironmentController
import org.apache.log4j.Logger;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* TODO 在普通的控制器和Servie业务中也可以直接实现EnvironmentAware来获取系统环境变量,但是在获取系
统环境变量的时机为系统加载的时候
*
*
*/
@RestController
@RequestMapping ( "/system" )
public class SystemEnvironmentController implements EnvironmentAware {
private String java_home ;
private Logger logger = Logger. getLogger (getClass());
@RequestMapping ( "/javahome" )
public String getJAVAHOME() {
return java_home ;
}
@Override
public void setEnvironment(Environment environment ) {
java_home = environment .getProperty( "JAVA_HOME" );
logger .info( "控制器中获取的系统环境变量:" + java_home );
}
}
请求控制器:查看效果
【Spring boot 读取系统环境变量】
日志输出:
【Spring boot 读取系统环境变量】
我们还可以通过@ConfigurationProperties 读取 application 属性配置文件中的属性。
具体代码:
com.hpit.sb.config.MyDataConfiguration
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableConfigurationProperties (MySqlConfig. class )
public class MyDataConfiguration {
@Autowired
private MySqlConfig config ;
}
com.hpit.sb.config.MySqlConfig
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties (prefix= "spring.datasource." )
public class MySqlConfig {
private String url ;
private String username ;
private String password ;
private String driverClassName ;
public String getUrl() {
return url ;
}
public void setUrl(String url ) {
this . url = url ;
}
public String getUsername() {
return username ;
}
public void setUsername(String username ) {
this . username = username ;
}
public String getPassword() {
return password ;
}
public void setPassword(String password ) {
this . password = password ;
}
public String getDriverClassName() {
return driverClassName ;
}
public void setDriverClassName(String driverClassName ) {
this . driverClassName = driverClassName ;
}
}
代码解释:
@ConditionOnClass 表明该@Configuration 仅仅在一定条件下才会被加载,这里的条件是 Mongo.class 位于类
路径上
· @EnableConfigurationProperties 将 Spring Boot 的配置文件( application.properties )中的
spring.data.mongodb.*属性映射为 MongoProperties 并注入到 MongoAutoConfiguration 中。
· @ConditionalOnMissingBean 说明 Spring Boot 仅仅在当前上下文中不存在对象时,才会实例化一个
Bean。这个逻辑也体现了 Spring Boot 的另外一个特性——自定义的 Bean 优先于框架的默认配置,我们如果显
式的在业务代码中定义了一个对象,那么 Spring Boot 就不再创建。

文章来源地址https://www.toymoban.com/news/detail-464380.html

到了这里,关于【Spring boot 读取系统环境变量】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring Boot 3】读取resource文件

    软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或多或少的时间、检索不止一篇资料才能得出一个可工作的DEMO,这占用了我大量的时

    2024年03月12日
    浏览(33)
  • ubuntu下 C/C++程序读取设置环境变量

    设置环境变量很简单比如: 追加的话 可以通过echo回显 读取的话 main函数多加一个env参数 一个字符串数组 然后遍历这个数组 即可 使用的时候 如下:

    2024年02月13日
    浏览(25)
  • Spring Boot读取yml或者properties配置信息

    编写配置类 开始使用

    2024年02月14日
    浏览(44)
  • .NET配置文件大揭秘:轻松读取JSON、XML、INI和环境变量

      概述: .NET中的IConfiguration接口提供了一种多源读取配置信息的灵活机制,包括JSON、XML、INI文件和环境变量。通过示例,清晰演示了从这些不同源中读取配置的方法,使配置获取变得方便且易于扩展。这种方式适用于不同场景,如API密钥、数据库连接等,为应用提供了高度

    2024年02月20日
    浏览(30)
  • Spring Boot读取resource目录下文件失败解决方案及分析

    最近有个需求,就是需要从resource目录下读取文件返回给用户。在idea中运行时,有些resource下文件读取工具类能够正常获取读取到文件。但是通过java –jar的方式去运行jar包,此时resource下文件读取工具类读取文件就失效了。通过查询搜索,了解到了是读取的方式导致文件读取

    2024年02月05日
    浏览(42)
  • Spring Boot项目怎么对System.setProperty(key, value)设置的属性进行读取加解密

    之前我写过一篇文章使用SM4国密加密算法对Spring Boot项目数据库连接信息以及yaml文件配置属性进行加密配置(读取时自动解密),对Spring Boot项目的属性读取时进行加解密,但是没有说明对System.setProperty(key, value)设置的属性进行读取加解密,这个在开发过程中应该怎么实现呢

    2024年02月22日
    浏览(36)
  • 【Postman】Postman接口测试进阶用法详解:断言、全局与环境变量、关联、批量执行用例、读取外部文件实现参数化

    Postman断言使用JavaScript语言编写,写在Postman的【Tests】 标签中。 【Tests】中的脚本在发送请求之后执行,它会把断言的结果(PASS/FAIL)最终在【Test Results】 标签页中。 断言响应状态码是否为200(Status code is 200) 断言响应体JSON数据校验(Response body:JSON value check) 断言响应体

    2024年02月15日
    浏览(45)
  • Spring Boot 多环境配置

    在实际开发中,应用程序通常需要部署到不同的运行环境中,例如开发环境、测试环境、生产环境等。不同的环境可能需要不同的环境配置,针对这种情况,不可能手动变更配置文件来适应不同的开发环境,通常需要对项目进行多环境配置,Spring Boot框架提供了两种多环境配

    2024年02月08日
    浏览(27)
  • Spring Boot多环境配置

    Spring Boot的针对不同的环境创建不同的配置文件, 语法结构:application-{profile}.properties profile:代表的就是一套环境 application-dev.yml 开发环境 端口8090 application-test.yml 测试环境 端口8091 application-prod.yml 生产环境 端口8092 application-dev.yml文件 application-test.yml application-prod.yml 在appli

    2024年01月17日
    浏览(29)
  • Spring Boot 开发环境热部署

    Spring Boot 项目无法像前端项目那样,修改源代码后刷新网页就能即时看到效果,需要先暂停运行,再重新启动,最后刷新网页。 为了避免这一麻烦的操作,我们可以设置热部署, 启动服务后不论怎么修改源码,只需要在浏览器刷新一下就能出现修改后的界面。 如果使用ecl

    2024年02月07日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包