spring注入ApplicationContext对象的三种方式

第一种:直接注入

@Component
public class User {

    @Autowired
    private ApplicationContext applicationContext;

    public void show(){
        System.out.println(applicationContext.getClass().getName());
    }
}

  第二种方式:构造器注入

@Component
public class Bank {
    private ApplicationContext applicationContext;

    public Bank(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }

    public  void show(){
        System.out.println(applicationContext.getClass().getName()+"===========");
    }
}

  第三种:实现接口方式

@Component
public class Book implements ApplicationContextAware{

    private ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext=applicationContext;
    }

    public  void show(){
        System.out.println(applicationContext.getClass().getName());
    }
}

测试

public class App {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext con = new AnnotationConfigApplicationContext("com.edu.spring");
        User user = (User) con.getBean("user");
        user.show();
        con.getBean(Book.class).show();
        con.getBean(Bank.class).show();
        con.close();
    }

}

  

posted @ 2018-03-09 22:43  java王子  阅读(8968)  评论(0编辑  收藏  举报