Spring运行时注入

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;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值