[Java面试]一:常见面试题之框架篇Spring

我的博客首页:http://blog.csdn.net/m0_37116405
我的GitHub首页:https://github.com/KissLouis

  1. 什么是Spring
    1. Spring是一个轻量级框架,实现了IOC容器和非侵入式框架。提供了AOP的实现方式, 把应用业务逻辑和系统服务分开。面向Bean编程。
  2. Spring的主要核心
    1. 控制反转IOC:控制反转也可以称为依赖注入,即由容器负责把组件所依赖的具体对象注入给组件,一般以硬编码的方式,从而避免组件以硬编码的方式耦合在一起。
    2. 面向切面编程AOP:针对业务功能过程中的公共功能进行切面式提取。切面可以是处理过程中某个相对独立的步骤或者阶段,以便于运行时动态植入到业务逻辑中,最终实现公共功能和核心业务隔离。多用于日志,持久性,事务等公共功能。
  3. Spring面向切面编程
    1. 概念:把项目中需要在多处用到的功能,比如日志安全、事务管理等集中到一个类中处理,而不用在每个需要用到的该功能的地方显示调用
    2. 面向切面编程的目标:
      1. 把横切关注点从业务逻辑分离,独立模块化
      2. 在不改变现有代码的前提下,动态的添加功能
    3. Spring中切面编程中最多的地方:声明式事务管理
      1. 定义一个事务管理器
      2. 配置事务特性(相当于声明通知,一般在业务层的类的一些方法上定义事务)
      3. 配置哪些类的哪些方法需要配置事务(相当于切入点,一般是业务类上的方法)
    4. Spring事务管理
      1. 导入tx和aop命名空间
      2. 定义事务管理器Bean(transactionManager),并为其注入数据源Bean(sessionFactory)
      3. 通过配置事务增强,绑定事务管理器并针对不同方法定义事务规则
      4. 配置切面,将事务增强与方法切入点组合
    5. Spring设计模式
      1. 代理模式—在AOP和remoting中被用的比较多。
      2. 单例模式—在spring配置文件中定义的bean默认为单例模式。
      3. 模板方法—用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。
      4. 前端控制器—Spring提供了DispatcherServlet来对请求进行分发。
      5. 视图帮助(View Helper )—Spring提供了一系列的JSP标签,高效宏来辅助将分散的代码整合在视图里。
      6. 依赖注入—贯穿于BeanFactory / ApplicationContext接口的核心理念。
      7. 工厂模式—BeanFactory用来创建对象的实例。
    6. Spring优缺点分析
      1. 优点
        1. 使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
        2. AOP的很好支持,方便面向切面编程
        3. 对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA等
      2. 缺点
        1. 每个框架都有的问题,调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。要花一定的时间去理解他。
        2. 把很多JavaEE的东西封装了,在满足快速开发高质量程序的同时,隐藏了实现细节。

常见面试题,还需补充。
如果本篇博文中存在问题,烦请指出,本人及时修改,谢谢阅读!

你可能感兴趣的:(java,面试)