SSM框架自学总结

前一段时间总结了ssh框架的学习心得,今天来总结下ssm框架的学习心得。首先,ssm框架指的是Spring,Spring MVC,MyBatis,Spring 框架犹如程序开发中的绿草丛,一经出现就以其强大的控制反转ioc和依赖注入特性在众多框架中展现出了蓬勃生机的活力,控制反转就是指控制权发生了转移,而依赖注入是指将各个应用程序组件依赖的对象通过配置文件注入给该组件,降低耦合度,提高内聚性。依赖简单来说就是当类需要调用其他类的方法时,此时需要通过目标类的对象来调用目标类中定义的目标实例方法,此时这个目标类的对象就是当前类依赖的对象。看似简单的调用过程其实暴露了当前类和目标方法所在类,简称目标类产生了高度耦合依赖关系,当需要根据需求变动替换掉目标类时,就需要在依赖目标类的类中修改大量的调用代码,不利于程序的扩展和维护。解决方式有两种,都是控制反转的典型应用:一种是提倡面向接口编程,即在当前类中定义一个接口的引用,这样可以将目标类实现该接口,因为接口定义了规范,这样长此以往即使需要使用其他类替换需要调用的目标类,则目标类也只需要实现同一个接口即可,当前类的代码不需要变动,因为只是替换了接口的实现类,所以当前类的代码不需要改动。另一种方式就是在当前类和目标类之间定义一个工厂类,工厂类的作用就是根据不同的业务需求调用不同方法生成相应类的实例,这样就可以在当前类中根据需求直接使用工厂类生成依赖的目标类的实例并调用相应方法即可。即使替换掉目标类,当前类的代码同样不需要做很多改动,只需要适当改动工厂类中的生产方法即可。这两种方式就是实现控制反转ioc最典型的应用。再来说下依赖注入,依赖注入可以通过spring配置文件配置各个需要用到的组件的实例,声明组件也可以通过注解实现,比如service声明业务组件,repository 声明dao层组件,这样在依赖这些组件的类中代码实现时就可以通过resource,autowired等注解自动装配相应的实例对象,同样降低了组件之间的依赖关系以及减少了生成实例对象的代码,这里推荐使用注解实现,使用注解的前提是在spring配置文件中成功配置了扫描注解的扫描器,即context:component-scan标签实现扫描指定包中的注解。需要注意的是,spring容器是主容器,springmvc是子容器,一般在主容器中扫描业务和数据访问层的注解,子容器用来扫描控制器的注解,以免出现空指针异常。Spring还有一个强大的功能就是AOP,即面向切面编程。简单来说就是可以在不在方法中添加额外代码的情况下,在方法的执行前后动态增加一些额外的操作,需要添加额外操作的方法叫切入点,需要执行额外操作叫增强,将额外操作应用到切入点方法的过程叫做织入增强。增强类型有多种,包括前置增强,后置增强,异常抛出增强,环绕增强,最终增强等,都可以通过配置文件或注解实现配置增强和织入增强的功能。并且Spring支持事务管理功能,只需要配置事务管理器及事务隔离等级并应用到相应方法即可,方法名可以通过通配符实现。以上就是Spring的简介,因此Spring框架一般主要负责管理组件之间的依赖关系并提供事务管理功能。再来说说SpringMVC框架,SpringMVC实际上是Spring的一个技术子集,他的核心思想就是Spring框架的核心思想,但是结合了MVC设计模式,MVC指的是模型视图控制器,一般模型层使用JavaBean来封装数据和业务逻辑,视图层采用jsp,控制器采用自定义Controller类实现,取代了传统web开发使用Servlet充当控制器角色,原因很简单,因为Servlet依赖于过多的ServletAPI,并且处理请求模式单一,只能通过区分请求方式get post调用相应doXXX方法处理不同请求,使用不灵活。而SpringMVc正是发现了这一点,使用配置文件的形式配置视图解析器,比如常用的InternalResourceViewResolver视图解析器根据控制器中不同执行方法返回的字符串类型的逻辑视图名加上配置好的前缀和后缀后生成完整视图返回给客户端显示,控制器中可以根据业务的复杂程度定义多个不同的执行方法拦截不同请求并作出处理之后返回逻辑视图响应,并根据配置信息生成完整视图之后返回完整视图到客户端显示。注意,控制器中的执行方法拦截请求的url可以通过requestMapping注解实现,如果需要直接返回除逻辑视图名以外的其他类型的响应数据,可以通过responseBody注解实现,这样就不会生成完整视图,直接返回响应到客户端,一般结合ajax技术返回json等格式响应用的比较多。并且Springmvc支持根据参数或对象的属性名和url请求参数或提交表单的字段名自动映射到控制器执行方法的参数中,实现视图层到控制器的数据传递。同时在控制器的动作方法中,可以通过返回ModelAndView 对象的方式或者将Model作为执行方法的参数并在方法中向Model中存入数据的方式将控制器中的参数传递到视图中,并且支持和ServletAPI耦合或解耦的方式调用需要用到的ServletAPI在执行方法中实现响应功能。最后在来说说数据持久层框架MyBatis,MyBatis框架主要用来完成整个应用程序中的数据持久化工作,通过ORM自动映射模型层中的实体类和数据表之间的关系,通过配置文件配置映射关系后,可以在配置文件中通过各种标签并在其中定义sql语句实现数据增删改查操作,并且支持参数映射,使用param注解实现参数映射。需要注意的是,每一个映射文件都应该同时定义与之匹配的同名的映射器接口,并且接口中定义的方法要和映射文件中编写的sql语句所在的标签id属性保持一致。MyBatis映射文件还支持强大的动态sql语法,从而轻松实现数据持久化操作。以上就是对SSM框架的自学总结,如有用词不规范或者解释有误指出,还请大家多多指教,谢谢,感激不尽

你可能感兴趣的:(SSM框架自学总结)