@PropertySource读取配置文件通过@Value进行参数注入

有参数文件如下test.properties

project.author=wpfc
project.create_time=2018/3/29

在系统中读取对应的数据,并注入到属性中

@Configuration
@ComponentScan("cn.edu.ntu")
@PropertySource("classpath:test.properties")
public class ElConfig {

	@Value("#{systemProperties['os.name']}")
	private String osName;
	
	//要想使用@Value 用${}占位符注入属性,这个bean是必须的(PropertySourcesPlaceholderConfigurer),
    //这个就是占位bean,
	//另一种方式是不用value直接用Envirment变量直接getProperty('key')  
	@Value("${project.author}")
	public String author;
    
	@Autowired
	private Environment environment;
	
	//You need this if you use @PropertySource + @Value
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
       return new PropertySourcesPlaceholderConfigurer();
    }
	
	public void printProperties(){
		System.out.println("os name : " + osName);
		System.out.println("author  : " + author);
		System.out.println("env     : " + environment.getProperty("project.create_time"));
	}
	
}

测试方法:

public class MainApplication {

	public static void main(String[] args){
		AnnotationConfigApplicationContext context = null;
		context = new AnnotationConfigApplicationContext(ElConfig.class);
		ElConfig bean = context.getBean(ElConfig.class);
		bean.printProperties();
	}
	
}

测试结果:

os name : Windows 7
author  : wpfc
env     : 2018/3/29
@Import  引入javaConfig配置的配置类
@ImportResource   引入xml对应的配置文件

猜你喜欢

转载自my.oschina.net/u/2326864/blog/1786955