框架入门——名词解释

为什么要学习SSM框架

当前轻量级Java EE应用开发通常会采用两种方式:一种是以SSH(Struts+Spring+Hirernate)框架为核心的组合方式,

另一种是以SSM(Spring+Spring MVC+MyBatis)框架为核心的组合方式。使用这两种组合方式的项目都使Java EE架构具有高度的可维护性和可拓展性,同时极大地提高了项目的开发效率,降低了开发和维护的成本,因此,这两种组合方式已成为当前各个企业项目开发的首选。

两种组合框架的相同点在于都以Spring框架为核心,而两者的主要不同之处在于MVC的实现方式(Struts与Spring MVC),以及ORM持久化方面(Hibernate与Mybatis)。SSH较注重配置开发,其中的Hibernate对JDBC的完整封装更加面向对象,对增删改查的数据维护更自动化,但SQL优化方面较弱,学习门槛稍高;SSM更注重注解式开发,且ORM实现更加灵活,SQL优化更简便,学习容易入门。目前来说,传统企业项目的开发,使用SSH框架较多,而对性能要求较高的互联网项目,通常会选择SSM框架。

什么是Spring

Spring是一个分层一站式轻量级开源框架,它以IoC(控制反转)AOP(面向切面编程)为内核,使用基本的JavaBean来完成以前只可能由EJB(Enterprise Java Beans,Java企业Bean)完成的工作,取代了EJB的臃肿、低效的开发模式。

Spring致力于Java EE应用各层的解决方案,在表现层它提供了Spring MVC以及与Struts框架的整合功能;在业务逻辑层可以管理事务、记录日志等;在持久层可以整合MyBatis、Hibernate、JdbcTemplate等技术。因此,可以说Spring是企业应用开发很好的“一站式”选择。虽然Spring贯穿于表现层、业务逻辑层和持久层,但它并不想取代那些已有的框架,而是以高度的开放性与它们进行无缝整合。

依赖注入

依赖注入与控制反转的含义相同,是从两个角度描述的同一个概念。

当某个JAVA对象(调用者)需要调用另一个JAVA对象(被调用者,即被依赖对象)时:

传统模式下,调用者会采用"new 被调用者"的代码方式来创建对象,

这种方式导致了调用者与被调用者之间的耦合性增加,不利于后期项目的升级和维护。

使用Spring时,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制权就由应用代码转移到了Spring容器,控制权发生了反转,这就是Spring的控制反转

从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入

面向切面编程(AOP)

AOP是面向对象编程(OOP)的一种补充,目前已成为一种比较成熟的编程方式。

在传统的业务处理代码中,通常都会进行事务处理、日志记录等操作。虽然使用OOP可以通过组合或者继承的方式来达到代码的重用,但如果要实现某个功能(如日志记录),同样的代码仍然会分散到各个方法中。这样,如果想要关闭某个功能,或者对其进行修改,就必须要修改所有的相关方法。这不但增加了开发人员的工作量,而且提高了代码的出错率。

为了解决这一问题,AOP思想随之产生。AOP采用横向抽取机制,将分散在各个方法的重复代码提取出来,然后在程序编译或运行时,再将这些提取出来的代码应用到需要执行的地方。这种采用横向抽取机制的方式,采用传统的OOP思想显然是无法办到的,因为OOP只能实现父子关系的纵向的重用。虽然AOP是一种新的编程思想,但却不是OOP的替代品,它只是OOP的延伸和补充。

AOP的使用,使开发人员在编写业务逻辑时可以专心于核心业务,而不必过多地关注于其他业务逻辑的实现这不但提高了开发效率,而且增强了代码的可维护性。

目前最流行的AOP框架有两个,分别为Spring AOP和AspectJ。Spring AOP使用纯Java实现,AspectJ是一个基于Java的AOP框架。

动态代理

AOP的实现原理就是动态代理。

动态代理和静态代理的区别是,静态代理的的代理类是我们自己定义好的,在程序运行之前就已经变异完成,但是动态代理的代理类是在程序运行时创建的。相比于静态代理,动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类中的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值