Java Spring AOP与BeanFactory详解

需积分: 5 0 下载量 60 浏览量 更新于2024-07-09 收藏 25.35MB DOCX 举报
"Java面试自我总结,主要涵盖了Java集合、Spring框架以及AOP的理解,还有BeanFactory和ApplicationContext的区别。" 在Java开发中,面试时常常会涉及到基础与进阶的知识点,这里对Java集合和Spring的AOP以及Spring的启动过程进行深入探讨。 **Java集合** Java集合框架是Java编程语言中用于存储数据的重要工具,包括List、Set和Map三大接口,以及实现这些接口的具体类,如ArrayList、LinkedList、HashSet、HashMap等。理解它们的特点和应用场景至关重要: 1. **List**:有序、允许重复元素,常见的实现类有ArrayList(动态数组)和LinkedList(链表)。ArrayList适合于随机访问,而LinkedList适合于插入和删除操作。 2. **Set**:不允许重复元素,典型的实现类有HashSet(基于哈希表)和TreeSet(基于红黑树)。HashSet不保证元素顺序,而TreeSet则按自然排序或自定义比较器进行排序。 3. **Map**:存储键值对,常见的实现类有HashMap(无序,基于哈希表)、LinkedHashMap(有序,维护插入顺序或访问顺序)和TreeMap(有序,基于红黑树)。理解这些类的不同性能特性和使用场景是面试中的常见问题。 **Spring AOP理解** AOP(面向切面编程)是Spring框架的一个重要特性,它允许开发者将关注点从主业务逻辑中分离出来,如日志记录、事务管理等。在Spring中,AOP通过代理模式实现,分为JDK动态代理和CGLIB代理: 1. **JDK动态代理**:适用于实现了接口的类,Spring会在运行时动态创建一个实现了相同接口的新类,这个新类在调用目标方法前后加入切面代码。 2. **CGLIB代理**:适用于没有接口的类,Spring会使用CGLIB库生成目标类的子类,并在子类中加入切面代码。 **Spring启动过程** Spring启动过程涉及BeanFactory和ApplicationContext的初始化: 1. **创建BeanFactory**:读取配置文件,解析成BeanDefinition,存储每个Bean的属性和依赖。 2. **解析配置**:转化BeanDefinition,获取Bean的所有属性和依赖,以及初始化所需的处理器。 3. **刷新容器**:初始化所有单例Bean,完成依赖注入。 4. **注册单例Bean**:生成扩展的ApplicationContext,提供更丰富的功能,如国际化支持、资源访问、多配置文件加载和事件监听等。 **BeanFactory与ApplicationContext的区别** 1. **延迟加载**:BeanFactory仅在需要时实例化Bean,而ApplicationContext在启动时预先加载所有单例Bean,有助于早期发现配置错误。 2. **预加载**:ApplicationContext启动后占用更多内存,因为所有单例Bean已经创建,但运行时响应更快。 3. **功能扩展**:ApplicationContext提供了更多的企业级服务,如事件监听、国际化和资源访问,更适合复杂的应用场景。 理解这些核心概念对于Java开发者,特别是面试时,能帮助展示扎实的基础知识和深入理解。在实际项目中,根据需求选择合适的容器,可以优化性能和内存使用。