使用 Springboot PropertiesFactoryBean 的自动装配问题

Autowiring Issue with using Springboot PropertiesFactoryBean

我是 Springboot PropertiesFactoryBean 的新手,想从类路径中注入一个文件,以便我可以将其填充到 Map

属性文件在 Eclipse 上的位置:src/main/resources

文件内容:simple_property.properties:

key1=value1
key2=value2
key3=value3

我的 ApplicationConfiguration.java 如下所示:

import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;

@Configuration
public class ApplicationConfiguration {

    @Bean(name = "simpleMapping")
    public static PropertiesFactoryBean artifactMapping() {
        PropertiesFactoryBean bean = new PropertiesFactoryBean();
        bean.setLocation(new ClassPathResource("simple_property.properties"));

        return bean;
    }

}

我有一个用于 bean 的 ApplicationRunner 接口 运行:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class pCli implements ApplicationRunner {

    @Autowired
    private SomeClass someProgram;

    public static void main(String[] args) {
        SpringApplication.run(pCli.class, args);
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        someProgram.run(args.getOptionValues("param1").get(0));
    }
}

我无法理解并继续我如何使用 bean 读取所有属性?例如,如何将属性放入 Map 的变量中并访问它们? (如果@Autowired 已经从类路径加载了属性文件,那么我该如何访问它?)

假设您在 属性 文件中有这样的地图,

app.number-map={KEY1:1, KEY2:2, KEY3:3}

您可以通过使用 @Value 注释注入 属性 来使用此值。以下是将值注入方法的示例。 Spring 表达式 #{${app.number-map}} 将获取属性文件中的值。

someMethod(@Value("#{${app.number-map}}") 
        Map<String, Integer> numberMap) {
   // ...
}

使用 application.properties 因为你还在学习。它会让你的生活变得轻松。此外,保留一个单独的配置 bean 确实可以帮助您轻松管理和访问 属性 值。