A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

SSH与SSM之间有什么区别?——面试题提炼前言:对于我们java程序员而言,在面试的过程中,无疑不会被问到有关SSH与SSM的问题,所以我就在这里提炼了一下我对它们的认识,以作后续参考,有什么写的不对的地方,还请指正与谅解。

从大体方面回答:

        SSH        SSM
指向技术        Struts+Spring+hibernate        Spring+SpringMVC+MyBatis
所以只需回答面试官Struts和SpringMVC的区别以及Hibernate和Mybatis的区别

1、Struts2与SpringMVC
        Struts2        SpringMVC
核心处理器(入口)        Filter        Servlet
        基于类,每次发一次请求都会实例一个Action        基于方法设计
开发效率        开发效率SpringMVC比Struts2高        支持JSR303,处理ajax请求更加方便
页面的开发效率        OGNL表达式使页面的开发效率更高些        页面开发效率相对低些


2、Hibernate与Mybatis
        Hibernate        Mybatis
开发效率        sql语句已经被封装,直接可以使用,加快系统开发        属于半自动化,sql需要手工完成,稍微繁琐
SQL优化        自动生成SQL,有些语句较为繁琐,会多消耗一些性能        手动编写SQL,可以避免不需要的查询,提高系统性能
对象管理        完整的ORM框架,开发过程中,无需过多关注底层实现,只需要管理对象即可        需要自行管理映射关系


3、Spring
1)什么是Spring?及其优点?
spring是一个轻量级的IOC与AOP容器框架

对主流框架有很好的集成支持,如Hibernate、SpringMVC等框架

低侵入式的,基于Spring开发一般不依赖于它的类。

Spring是个容器,因为它包含并且管理应用对象的生命周期和配置,比如对象的创建、销毁、回调等

对事务的管理

2)讲一讲你对AOP和IOC的理解?
IOC:控制反转(Inversion of Control,简称:IOC),原本应该由我们new对象的这个操作转移到Spring容器中执行

eg:

在一个项目中,如果有100个人请求同一个方法,这个方法会被调用100次,那类中new的变量也会被创建100次,这是相当耗费资源的;而IOC底层对这种对象的创建使用的是单例模式,这样就避免了前面所说的资源损耗。



AOP:面向切面编程(Aspect Oriented Programming,简称:AOP),讲到AOP就必须先提及以下OOP,OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能

,简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

eg:

项目中体现:事务 日志

操作数据库的增删改之前,都需要开启事务,增删改之后,都需要提交事务,这样我们就可以写一个拦截器,底层就是采用动态代理实现前置通知和后置通知,在前置通知中开启事务,在后置通知中提交事务,在spring.xml中配置通知即可,spring的事务管理底层就用到了AOP

3)Spring的注入方式有哪些?
set注入:

为需要控制反转的变量提供set方法,在spring配置文件中使用<property>标签配置

构造注入:

为需要控制反转的变量提供构造函数,在spring配置文件中使用<constructor-arg>标签配置

接口注入:

具有侵略性,必须要继承才能用。



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马