关闭

Environment env java.lang.NullPointerException

42人阅读 评论(0) 收藏 举报
分类:

在Spring官方代码

https://docs.spring.io/spring/docs/5.0.4.BUILD-SNAPSHOT/spring-framework-reference/core.html#beans-standard-annotations

@Configuration
@PropertySource("classpath:/com/myco/app.properties")
public class AppConfig {

    @Autowired
    Environment env;

    @Bean
    public TestBean testBean() {
        TestBean testBean = new TestBean();
        testBean.setName(env.getProperty("testbean.name"));
        return testBean;
    }
}

在进行复杂依赖时会因为env加载依赖时间初见迟缓导致为空,其他依赖也加载不进去

解决方法有
让此Configuration类实现EnvironmentAware接口,这个接口只有一个void setEnvironment(Environment environment);方法.这里的回调能得到Environment,问题解决!

我认为好的解决方法应该如下:


/**
在加入@PropertySource("")后
 注解后其实 Environment env已经是一个bean了
在使用时 直接当做bean去使用用就不会出现加载问题
**/

public BasicDataSource dataSource(Environment env){
        BasicDataSource dataSource=new BasicDataSource();
        System.out.println(env.getProperty("driverClassName"));
        dataSource.setDriverClassName(env.getProperty("driverClassName"));
        dataSource.setUrl(env.getProperty("url"));
        dataSource.setUsername(env.getProperty("username"));
        dataSource.setPassword(env.getProperty("password"));
        return dataSource;
    }
0
0
查看评论

Python安装与准备

在powershell里面输入Python ex1.py 然后敲回车 如果出现错误 那就是路径问题,在powershell里面输入一下代码 [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Py...
  • sinat_33921105
  • sinat_33921105
  • 2017-02-22 19:03
  • 425

注册BeanFactoryPostProcessor Bean的Configuration下的Environment为null

参考:https://github.com/spring-projects/spring-boot/issues/4711 这个issue提出不到20天给我搜出来了,还是相信google的强大问题: 在spring的Configuration使用@Bean注册一个BeanFactoryPost...
  • xiejx618
  • xiejx618
  • 2015-12-27 18:13
  • 1879

如何使ssh server env命令与在本地直接执行env命令后的输出结果相同

假设有两台机器,分别为server,client.以同一账号在server上执行env命令所给出的结果,往往与在client上执行ssh server env命令的结果不同.这是因为OPENSSH出于安全考虑对登录者的限制.但可以修改相关配置文件使上述两条命令的执行结果相同,即可以修改登录者的权限....
  • TodLeigh
  • TodLeigh
  • 2007-11-17 18:58
  • 2232

Spring学习之旅(七) 使用属性文件

简单看看如何使用属性文件配置项目
  • yjp19871013
  • yjp19871013
  • 2016-12-26 10:26
  • 372

EBS Environment Files(.env file)

对于EBS数据库管理员用户,可以把db/tech_st/10.2.0下的.env设置到/home/user下的.bash_profile文件(隐藏文件)中,这样和DB相关的一些环境变量就会自动在登录时加载(比如ORACLE_HOME,ORACLE_SID,PATH,TNS_ADMIN,CONTEXT...
  • pan_tian
  • pan_tian
  • 2012-05-29 01:00
  • 4256

scons用户指南第七章:环境

一个环境就是能够影响一个程序如何执行的值的集合。SCons里面有三种不同类型的环境: External Environment(外部环境): 外部环境指的是在用户运行SCons的时候,用户环境中的变量的集合。这些变量在SConscript文件中通过Python的os.environ字典可...
  • andyelvis
  • andyelvis
  • 2012-02-18 11:27
  • 5995

Property设置属性的7种方法

<br />1、设置name和value属性值,比如:<property name="srcdir" value="${basedir}/src"/><br />2、设置name和refid属性值,比如:<proper...
  • naive1010
  • naive1010
  • 2011-05-11 06:59
  • 1449

php设置$_ENV值的几种方法

$_ENV 值是从 PHP 解析器的运行环境导入到 PHP 的全局命名空间。比如,php-cli模式执行,读取当前用户环境变量;php-fpm模式初始化时,读取当前用户环境变量; 1. 通过 修改系统级、用户级配置文件 设置环境变量 通过 /etc/profile, /etc/environme...
  • SoulsCarrier
  • SoulsCarrier
  • 2015-03-06 11:14
  • 2479

利用environment文件配置heat模板参数

使用heat client命令创建或者更新stack,其中有一个可选参数-e/--environment-file,用于指定环境文件。 这篇文章就来探讨一下environment文件的作用和使用。 目前environment文件主要有两个方面的作用: 配置模板需要的参数值重载资源类型定义
  • wifeisboss
  • wifeisboss
  • 2015-08-19 17:58
  • 1319

Lmod安装(environment module system )

目的:优化管理Linux 服务器上对编译器依赖的应用包。    问题描述: 工作需要petsc, libmesh, openfoam等库协同, 推荐采用Lmod管理。    安装过程:    1 Lmod 基于 lua 脚本,下载 ...
  • lizhengjiang
  • lizhengjiang
  • 2014-03-12 06:22
  • 967