SSH与SSM之间有什么区别?——面试题提炼

1 篇文章 0 订阅
1 篇文章 0 订阅

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

 从大体方面回答:

 SSHSSM
指向技术Struts+Spring+hibernateSpring+SpringMVC+MyBatis

所以只需回答面试官Struts和SpringMVC的区别以及Hibernate和Mybatis的区别

1、Struts2与SpringMVC

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

 

2、Hibernate与Mybatis

 HibernateMybatis
开发效率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>标签配置

接口注入:

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

 

 


 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值