我是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已经从classpath加载了属性文件,那么我该如何访问它?)
答案 0 :(得分:0)
假设您将地图保存在属性文件中,
app.number-map={KEY1:1, KEY2:2, KEY3:3}
您可以通过使用@Value注释注入属性来使用此值。以下是将值注入方法的示例。春季表达式#{${app.number-map}}
将在属性文件中获取值。
someMethod(@Value("#{${app.number-map}}")
Map<String, Integer> numberMap) {
// ...
}
请使用application.properties
,因为您仍在学习中。这会让您的生活变得轻松。另外,保留单独的配置Bean确实可以帮助您轻松管理和访问属性值。