• Spring


    技术总结:

    1.为什么使用Spring ?

    1). 方便解耦,简化开发
    
         通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。
    
    2). AOP编程的支持
    
         通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测、事务管理、日志记录等。
    
    3). 声明式事务的支持
    
    4). 方便集成各种优秀框架
    
    5). 降低Java EE API的使用难度
    
         如对JDBC,JavaMail,远程调用等提供了简便封装
    
    1. 什么是IoC,为什使用IoC ?

      IoC全称Iversion of Controller,控制反转。

      这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。

      它能指导我们如何设计出松耦合、更优良的程序。

    2. 什么是AOP,为什么使用AOP ?

      AOP全称:Aspect-Oriented Programming,面向切面编程。

      AOP,面向切面编程,就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中,比如事务管理、权限控制、日志记录、性能统计等。

      AOP并没有帮助我们解决任何新的问题,它只是提供了一种更好的办法,能够用更少的工作量来解决现有的一些问题,使得系统更加健壮,可维护性更好。

    3. 什么是Spring的事务管理?

      事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。

      开发中为了避免这种情况一般都会进行事务管理。

      Spring的声明式事务通常是指在配置文件中对事务进行配置声明,其中包括了很多声明属性,它是通过Spring Proxy帮你做代理,自己不用额外的写代码,只要在Spring配置文件中声明即可;通常用在数据库的操作里面;

      编程式事务就是指通过硬编码的方式做事务处理,这种处理方式需要写代码,事务中的逻辑可以自己定制;可以是数据库的东东,也可以是其他的操作。

      Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管理,可以通过Spring的注入来完成此功能。

    4. Spring框架支持以下五种bean的作用域:

      singleton : 默认值,bean在每个Spring ioc 容器中只有一个实例。

      prototype:一个bean的定义可以有多个实例。

      request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。

      session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。

      global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。

    5. 什么是Spring的MVC框架?

      Spring 配备构建Web 应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。

      spring mvc是一个基于mvc的web框架。spring mvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

    6. 如何启用注解:

      context:annotation-config/

      如果使用<context:component-scan base-package="com.tgb.web.controller.annotation"> </context:component-scan> 则上面内容可以省略

    7. Spring MVC的请求流程:

      第一步:发起请求到前端控制器(DispatcherServlet)

      第二步:前端控制器请求HandlerMapping查找Handler可以根据xml配置、注解进行查找

      第三步:处理器映射器HandlerMapping向前端控制器返回Handler

      第四步:前端控制器调用处理器适配器去执行Handler

      第五步:处理器适配器去执行Handler

      第六步:Handler执行完成给适配器返回ModelAndView

      第七步:处理器适配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一个底层对象,包括 Model和view

      第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)

      第九步:视图解析器向前端控制器返回View

      第十步:前端控制器进行视图渲染。视图渲染将模型数据(在ModelAndView对象中)填充到request域

      第十一步:前端控制器向用户响应结果

    8. 注解的处理器映射器和适配器

      spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。

      在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器。

      使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置

    9. spring 与 mybatis整合过程

      第一步:整合dao层

       mybatis和spring整合,通过spring管理mapper接口。
      
       使用mapper的扫描器自动扫描mapper接口在spring中进行注册。
      

      第二步:整合service层

       通过spring管理 service接口。
      
       使用配置方式将service接口配置在spring配置文件中。
      
       实现事务控制。
      

      第三步:整合springmvc

       由于springmvc是spring的模块,不需要整合。
      

      主要配置有:

      1). mybatis配置文件sqlMapConfig.xml配置别名自动扫描(实体类)

      2). mapper扫描器(接口,数据库访问接口)

      3). 数据库连接池配置

      4). 声明式事务配置

      5). 启用注解扫描:<context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan>

      6). 配置注解映射器和适配器: mvc:annotation-driven</mvc:annotation-driven>

      7). 视图解析器:

      8). 配置控制类: DispatcherServlet前端控制器

      9). 配置spring配置文件加载类:ClassLoadListener

    10. sqlMapConfig.xml,mybatis自己的配置文件。

    心得:1.我感觉学习Java一定要脚踏实地!先吧基础学好,因为没有继承在以后学习中很可能遇到很多麻烦 那就不好了! 2.多向高手请教,多看一些资料,这样才能学会总结和领会! 学了1一年Java了 s1,s2都在打酱油 迷茫过,困惑过,以前作业从来不做 一天天的就知道玩 现在感觉到了危机感 因为还一年就毕业找工作了 我到现在感觉啥都没学 所有我s3要加油了 我现在认识到在像s1,s2那样不行的,我必须端正态度和方式! 现在最起码懂了个4成 我自己感觉已经很好了 慢慢来 我最起码现在有信心学下去!之后更加努力吧!!!

  • 相关阅读:
    【重点】Java大厂面试10个知识点汇总
    TEC-2机微程序设计
    Component 'TABCTL32.OCX'错误的处理方法
    Azure DevOps的使用入门
    Mac + VMware Fusion + Windows 11尝鲜
    Golang接口类型-下篇
    Golang接口类型-上篇
    基于Python实现原生的登录验证码
    一套帮助你理解C语言的测试题(转)
    KMP算法详解
  • 原文地址:https://www.cnblogs.com/xjyboke/p/14038358.html
Copyright © 2020-2023  润新知