當一個類實現了這個接口(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); } }