ApplicationContexAware的作用

當一個類實現了這個接口(ApplicationContextAware)之後,這個類就可以方便獲得ApplicationContext中的所有bean。換句話說,就是這個類可以直接獲取spring配置文件中,所有引用到的bean對象。

一.基於xml的方式

1.工具類實現ApplicationContextAware接口

public class BeanFactoryUtil implements ApplicationContextAware {
    protected static ApplicationContext ctx = null;


     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
         ctx = applicationContext;
     }

     public static Object getBean(String beanId) {
         return ctx.getBean(beanId);
     }
}

 

2.UserDao

public class UserDao {
}

 

3.配置文件中註冊

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

   <bean id="beanFactoryUtil" class="com.itheima.testAware.BeanFactoryUtil"/>
    <bean id="userDao" class="com.itheima.testAware.UserDao"/>
</beans>

 

4.測試類

public class AwareTest {
    public static void main(String []args) {
        ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
        //ApplicationContext context=new AnnotationConfigApplicationContext(EventConfig.class);
        UserDao userDao = (UserDao)BeanFactoryUtil.getBean("userDao");
        System.out.println(userDao);

    }
}

 

 


 

一.基於註解的方式

1.工具類實現ApplicationContextAware接口

public class BeanFactoryUtil implements ApplicationContextAware {
    protected static ApplicationContext ctx = null;


     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
         ctx = applicationContext;
     }

     public static Object getBean(String beanId) {
         return ctx.getBean(beanId);
     }
}

 

2.UserDao

public class UserDao {
}

 

3.配置類

@Configuration
@ComponentScan("com.itheima.testAware")
public class AwareConfig {

}

 

4.測試類

public class AwareTest {
    public static void main(String []args) {
      //  ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
        ApplicationContext context=new AnnotationConfigApplicationContext(AwareConfig.class);
        UserDao userDao = (UserDao)BeanFactoryUtil.getBean("userDao");
        System.out.println(userDao);

    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章