Spring面试深度解析:IOC、Beans、注解与AOP

版权申诉
0 下载量 150 浏览量 更新于2024-06-19 收藏 1.31MB DOCX 举报
"面试官可能对Spring框架提出的问题及相关知识点" 面试官在面试中可能会针对Spring框架提出一系列问题,涵盖其核心概念、优点、模块、依赖注入、Bean管理、注解、数据访问以及面向切面编程等多个方面。以下是对这些问题的详细解答: 1. **Spring Framework的主要功能**:Spring是一个全面的后端开发框架,提供诸如 inversion of control (IoC)、dependency injection (DI)、面向切面编程(AOP)、事务管理、数据访问集成、MVC web框架等关键功能。 2. **Spring Framework的优点**:它简化了Java企业级应用的开发,通过IoC和DI减少了代码的耦合,提供了AOP来实现横切关注点,支持多种数据访问技术,如JDBC、Hibernate、JPA等,并且有强大的社区支持和丰富的扩展库。 3. **Spring的模块**:Spring由多个模块组成,包括Core Container(核心容器,包含BeanFactory和ApplicationContext)、Data Access/Integration(数据访问/集成,如JDBC、ORM、JMS)、Web(Web应用上下文和MVC框架)、AOP和Aspects(面向切面编程)、Instrumentation(用于服务器的类加载器工具)、Test(测试支持)等。 4. **Spring配置文件**:是XML格式的文件,用于定义和配置应用中的bean,描述它们之间的依赖关系以及它们的属性。 5. **Spring应用程序组件**:主要包括bean,这些bean由Spring容器管理,可以是服务、DAO、控制器等,它们通过依赖注入相互协作。 6. **依赖注入(DI)**:是Spring的核心特性,允许对象之间的关系在运行时被外部容器管理,而不是由对象自身硬编码。 7. **Spring IOC容器**:负责创建、管理、装配bean,有两种主要类型:BeanFactory和ApplicationContext。前者是最基本的容器,而后者添加了更多企业级功能,如消息源、国际化支持和应用事件。 8. **依赖注入的方式**:包括构造器注入和setter注入,两者各有优缺点,构造器注入确保对象在创建时就已完成初始化,setter注入则更灵活,可在对象创建后进行调整。 9. **Spring中的Bean**:是容器管理的对象,可以配置其生命周期、作用域、依赖关系等。 10. **Spring的bean配置方式**:包括XML配置、注解配置和Java配置,其中注解配置和Java配置更加简洁和直观。 11. **beanscope**:Spring支持多种bean的作用域,如singleton(单例)、prototype(原型)、request、session、global session等,每种作用域决定bean的实例化和生存周期。 12. **Spring装配**:是指如何定义bean及其依赖关系,可以是自动装配或手动指定。 13. **自动装配的局限**:虽然自动装配简化了配置,但可能无法满足所有复杂的依赖关系,可能导致隐式依赖和难以调试的问题。 14. **Spring注解**:如@Component、@Controller、@Repository、@Service用于标记不同角色的bean,@Required表示属性必须被注入,@Autowired自动注入依赖,@Qualifier用于指定注入的特定bean,@RequestMapping处理HTTP请求映射。 15. **Spring的数据访问**:Spring提供了一整套支持,包括DAO模板类(如JdbcTemplate),支持各种ORM框架(如Hibernate、MyBatis),并提供声明式事务管理。 16. **AOP(面向切面编程)**:是Spring用来实现横切关注点的一种技术,如日志、事务管理等。 17. **AOP术语**:Aspect(切面)包含了关注点和模块化的交叉关注点;Advice(通知)是切面在特定JoinPoint(连接点)执行的代码;Pointcut(切入点)定义了何时应用通知;JointPoint(连接点)是方法调用等程序执行点。 18. **AOP实现方式**:Spring支持代理模式实现AOP,包括基于接口的JDK动态代理和基于类的CGLIB代理。 19. **Spring AOP与AspectJ的区别**:Spring AOP是基于代理的,而AspectJ是编译时或类加载时织入,更强大,支持更多的pointcut表达式。 20. **编织(Weaving)**:是将切面和其他应用类组合在一起的过程,可以发生在编译时、加载时或运行时。 21. **Spring支持的事务管理类型**:包括编程式事务管理和声明式事务管理,后者更常见,通过@Transactional注解实现。 22. **Spring支持的ORM框架**:包括Hibernate、JPA、iBatis等,方便与数据库交互。 以上就是面试中可能涉及的Spring相关知识点,涵盖了Spring框架的各个方面,理解并掌握这些内容对于在实际开发和面试中都很重要。