引领先锋|使用Spring IoC容器:选BeanFactory还是ApplicationContext?
通过上一篇ApplicationContext 的特性 , 可以得出结论BeanFactory 是 Bean容器 , 它不提供企业特性 , 比如AOP、事务以及事件等 , 这些都被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);}}}
推荐阅读
- 引领时尚新时代|她是饶雪漫书中的模特,和鹿晗在一起被赞般配,笑起来碾压林允!
- 美食工坊|而有一个很唯美的名字,日本仍保留使用,古代的苹果不叫“苹果”
- 引领时尚新时代|传闻她被渣男骗钱骗大肚子,无奈生下孩子给母亲抚养,气质美上天
- 引领时尚新时代|她是典型中国好媳妇,却嫁给相识不到20天的男友,穿搭霸气侧漏
- 引领时尚新时代|她从小就被亲爸说是捡来的,出道10年没谈过恋爱,美得让人着迷
- 航天器|中国可重复使用航天器刚发射成功,美媒就来乱弹琴:或是太空武器
- 皮肤|CSGO:最贵皮肤无一入选?这几款手感满分,更适合USP使用
- 「宁静」宁静不管穿了个啥都能引领时髦,嫌T恤配牛仔裤不够炫,再加薄纱
- 军事|外媒关注中国发射“可重复使用试验航天器”:保密程度高于常规
- 医保基金|山东通报16起医保基金违规使用或欺诈骗保典型案例 涉违规收费等问题
