Spring3.0下外部文件propereties值的注入
新建properties配置文件:
jdbc-config.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
1.配置特殊的Bean加载外部文件
1.1 PropertySourcesPlaceholderConfigurer
Bean配置
@Configuration
public class ApplicationConf {
//注册特殊的Bean PropertySourcesPlaceHolderConfigure
@Bean
public PropertySourcesPlaceholderConfigurer getProperties(){
PropertySourcesPlaceholderConfigurer placeholderConfigurer = new PropertySourcesPlaceholderConfigurer();
//将配置文件路径转换成类路径
ClassPathResource classPathResource = new ClassPathResource("jdbc-config.properties");
placeholderConfigurer.setLocations(classPathResource);
return placeholderConfigurer;
}
//获取配置文件中的值
@Bean
public String str1(@Value("${jdbc.driverClassName}") String driver){
return driver;
}
}
测试代码:
public class Demo1 {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConf.class);
String str1 = context.getBean("str1",String.class);
System.out.println(str1);
}
}
显示结果:
2.使用注解进行注入
对应xml文件中标签:
<context:property-placeholder location="classpath:properties/jdbc-info.properties"></context:property-placeholder>
在类上增加注解@PropertySource("classpath:config/jdbc-config.properties")
这里注意classpath都是小写
@Configuration
@PropertySource("classpath:jdbc-config.properties")
public class ApplicationConf {
//获取配置文件中的值
@Bean
public String str1(@Value("${jdbc.driverClassName}") String driver){
return driver;
}
}
此注解的优势:
- 配置相对减少
- 支持将参数移出到类的私有成员变量上
@Configuration
@PropertySource("classpath:jdbc-config.properties")
public class ApplicationConf {
//私有变量修饰,方法体内直接使用
@Value("${jdbc.driverClassName}") private String driver;
//获取配置文件中的值
@Bean
public String str1(){
return driver;
}
}