SSM和SSH框架的对比

 

Spring

2) Spring AOP:提供切面支持

3) Spring DAO:提供事务支持,JDBC,DAO支持

4) Spring ORM:对流行的O/R Mapping封装或支持

5) Spring Web:提供Web应用上下文,对Web开发提供功能上的支持,如请求,表单,异常等。

6) Spring Web MVC:全功能MVC框架,作用等同于Struts。

7)Spring Core::核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它提供了组件生命周期的管理,组件的创建,装配,销毁等功能,它还是工厂模式的实现。BeanFactory 使用控制反转 (IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

IOC:Inversion of Control,控制反转。

许多应用都是通过彼此间的相互合作来实现业务逻辑的,如类A要调用类B的方法,以前我们都是在类A中,通过自身new一个类B,然后在调用类B的方法,现在我们把new类B的事情交给spring来做,在我们调用的时候,容器会为我们实例化。

 IOC容器的初始化过程

     资源定位,即定义bean的xml-------》载入--------》IOC容器注册,注册beanDefinition

    IOC容器的初始化过程,一般不包含bean的依赖注入的实现,在spring IOC设计中,bean的注册和依赖注入是两个过程,,依赖注入一般发生在应用第一次索取bean的时候,但是也可以在xm中配置,在容器初始化的时候,这个bean就完成了初始化。

三种注入方式,构造器、接口、set注入,我们常用的是set注入

bean是通过工厂模式创建

数据是反射注入

IOC的实现原理——————反射

IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。

AOP: 面向切面编程,在我们的应用中,经常需要做一些事情,但是这些事情与核心业务无关,比如,要记录所有update*方法的执行时间时间,操作人等等信息,记录到日志,通过spring的AOP技术,就可以在不修改update*的代码的情况下完成该需求。

AOP的实现原理------代理

AOP核心概念

  1、Aspect(切面)

  切面,是对交叉业务逻辑的统称。

  2、Joinpoint(连接点)

  连接点,指切面可以织入到目标对象的位置(方法,属性等)。

  3、Advice(通知)

  通知,指切面的具体实现。

  4、Pointcut(切入点)

  切入点,指通知应用到哪些类的哪些方法或属性之上的规则。

  5、Introduction(引入)

  引入,指动态地给一个对象增加方法或属性的一种特殊的通知。

  6、Weaving(织入)

  织入,指将通知插入到目标对象。

  7、Target(目标对象)

  目标对象,指需要织入切面的对象。

  8、Proxy(代理对象)

  代理对象,指切面织入目标对象之后形成的对象。

spring带给我们什么

◆方便解耦,简化开发

◆AOP编程的支持

◆声明式事务的支持

◆方便程序的测试

◆方便集成各种优秀框架

◆降低Java EE API的使用难度

 Springmvc和Struts2对比

springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。

springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。

Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。

spring mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量;struts2在接受参数的时候,可以用成员属性来接受参数,这就说明参数是让多个方法共享的,即其类属性却所有方法共享;

spring MVC和Spring是无缝(无缝:无须数据格式转换,直接访问来自数据源数据格式)的。从这个项目的管理和安全上也比Struts2高;

spring mvc处理ajax的请求十分方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可;Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便;

MyBatis和Hibernate对比

Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。

Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是mybatis无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。

Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值