1.从属性文件中读取到Environment中,再注入。
public class SuperMan implements Person{
public String name;
public void setName(String name){
this.name=name;
}
public String getName() {
return “i am superman”+name;
}
}
@Configuration
@ComponentScan("com.kai.vo")
@PropertySource("app.properties")
public class Configuration1 {
@Autowired
Environment env;
@Bean
public Person person(){
SuperMan s=new SuperMan();
s.setName(env.getProperty("person.name"));
return s;
}
}
2.通过属性占位符注入(如果使用自动装配的话),使用@Value注入:
@Configuration
@ComponentScan(“com.kai.vo”)
@PropertySource(“app.properties”)
public class Configuration1 {
@Autowired
Environment env;
}
@Component("person")
public class SuperMan implements Person{
public String name;
@Autowired
public void setName(@Value("${person.name}") String name){
this.name=name;
}
public String getName() {
return "i am superman"+name;
}
public class App
{
public static void main( String[] args )
{
System.out.println( “Hello World!” );
AnnotationConfigApplicationContext an=new AnnotationConfigApplicationContext(“com.kai.config”);
Person p=an.getBean(“person”,Person.class);
System.out.println(p.getName());
}
}
配置文件内容为:person.name=yangkai
说是要配置以下bean来解析属性占位符,但我没有配置也可以运行:
@Bean
public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer(){
return new PropertySourcesPlaceholderConfigurer();
}
运行结果为:
Hello World!
i am supermanyangkai
3.使用springEl注入,这个就更强大了,可以:
使用bean的id来引用bean,
调用方法和访问对象的属性,
对值进行运算
正则表达式
集合操作
下面以使用bean的id来调用bean的方法示例:
@Component
public class LazyMan implements Person {
public String getName() {
return "i am lazyman";
}
@Component
public class SuperMan implements Person{
public String name;
@Autowired
public void setName(@Value(“#{lazyMan.getName()}”) String name){
this.name=name;
}
public String getName() {
return “i am superman”+name;
}
}