引领先锋|使用Spring IoC容器:选BeanFactory还是ApplicationContext?

通过上一篇ApplicationContext 的特性 , 可以得出结论BeanFactory 是 Bean容器 , 它不提供企业特性 , 比如AOP、事务以及事件等 , 这些都被ApplicationContext支持
引领先锋|使用Spring IoC容器:选BeanFactory还是ApplicationContext?源码案例分析 【】
dependency-lookup-context.xml
【引领先锋|使用Spring IoC容器:选BeanFactory还是ApplicationContext?】BeanFactory 作为IoC容器
/** * {@link BeanFactory} 作为 IoC 容器示例 * * @author lisz (shangzhi.ibyte@gmail.com) */public class BeanFactoryAsIoCContainerDemo {public static void main(String[] args) {// 创建 BeanFactory 容器DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();XmlBeanDefinitionreader reader = new XmlBeanDefinitionReader(beanFactory);// XML 配置文件 ClassPath 路径String location = "classpath:/META-INF/dependency-lookup-context.xml";// 加载配置int beanDefinitionsCount = reader.loadBeanDefinitions(location);System.out.println("Bean 定义加载的数量:" + beanDefinitionsCount);// 依赖查找集合对象lookupCollectionByType(beanFactory);}private static void lookupCollectionByType(BeanFactory beanFactory) {if (beanFactory instanceof ListableBeanFactory) {ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory;Map users = listableBeanFactory.getBeansOfType(User.class);System.out.println("查找到的所有的 User 集合对象:" + users);}}}ApplicationContext 作为IoC容器
/** * 注解能力 {@link ApplicationContext} 作为 IoC 容器示例 * * @author lisz (shangzhi.ibyte@gmail.com) */@Configurationpublic class AnnotationApplicationContextAsIoCContainerDemo {public static void main(String[] args) {// 创建Bean容器AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();// 将当前类 AnnotationApplicationContextAsIoCContainerDemo 作为配置类(Configuration Class)applicationContext.register(AnnotationApplicationContextAsIoCContainerDemo.class);// 启动应用上下文applicationContext.refresh();// 依赖查找集合对象lookupCollectionByType(applicationContext);// 关闭应用上下文applicationContext.close();}/*** 通过 Java 注解的方式 , 定义了一个 Bean*/@Beanpublic User user() {User user = new User();user.setId(1L);user.setName("小码哥");return user;}private static void lookupCollectionByType(BeanFactory beanFactory) {if (beanFactory instanceof ListableBeanFactory) {ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory;Map users = listableBeanFactory.getBeansOfType(User.class);System.out.println("查找到的所有的 User 集合对象:" + users);}}}


推荐阅读