在创建 Spring 应用程序上下文之前阅读 application.properties



作为 Spring Boot 项目的一部分,我尝试在创建 Spring ApplicationContext 之前读取 application.properties,如下所示:

主类

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        ConfigurationClass con = new ConfigurationClass();
        con.readProperties();
        ApplicationContext c = SpringApplication.run(DemoApplication.class, args);
    }
}

配置类,

package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
@Configuration
@PropertySource("classpath:application.properties")
public class ConfigurationClass {
    private String value1;
    private String value2;
    @Autowired
    private Environment env;
    public void readProperties() {
        value1 = env.getProperty("app.value1");
        value2 = env.getProperty("app.value2");
    }
    public String getValue1() {
        return value1;
    }
    public String getValue2() {
        return value2;
    }
}

我想从应用程序属性中获取一些基本值并进行一些配置。此代码发生的情况是它会抛出nullpointerexception,因为envvalue1 = env.getProperty("app.value1");期间为 null。

我在这里做错了什么?

在创建 springapplication 上下文之前,如何在此时读取 application.properties 中的值?

任何帮助将不胜感激!

    @Configuration
    @PropertySource("classpath:application.properties")
    public class ConfigurationClass {
        @Value("${app.value1}")    
        private String value1;
        @Value("${app.value2}")    
        private String value2;
        public String getValue1() {
        return value1;
        }
        public String getValue2() {
        return value2;
       }
 }

然后调用它

 @SpringBootApplication
public class DemoApplication {
   public static void main(String[] args) {
    ApplicationContext c = SpringApplication.run(DemoApplication.class, args);
    ConfigurationClass  con = c.getBean(ConfigurationClass.class);
    System.out.println(con.getValue1());
    System.out.println(con.getValue2());
     }
}

最新更新