使用 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 确实可以帮助您轻松管理和访问 属性 值。
我是 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 确实可以帮助您轻松管理和访问 属性 值。