SSM框架考前复习笔记

最近赶上框架考试就做点复习笔记分享给大家,希望能帮上各位

一、Spring知识点

spring的特点与好处?

  • IOC/DI方便解耦;
  • AOP编程的支持;
  • 声明式事务的支持;
  • 方便程序的测试;
  • 方便集成各种优秀框架;
  • 轻量级开源框架,简化开发;

Spring Framework 有哪些核心模块?

spring-core:Spring 基础API 模块,如资源管理,泛型处理

spring-beans:SpringBean 相关,如依赖查找,依赖注入

spring-aop : SpringAOP 处理,如动态代理,AOP 字节码提升

spring-context : 事件驱动、注解驱动,模块驱动等

spring-expression:Spring 表达式语言模块
 

什么叫IOC?

  • IOC即控制反转,也就是获取的方式发生了反转,由最初new方式创建,转为框架创建、注入、这样可以降低对象之间的耦合度。

IOC容器的职责?

• 通用职责 

  • 依赖处理 
  • 依赖查找 

• 依赖注入 

  • 生命周期管理 
  • 容器 
  • 托管的资源(Java Beans 或其他资源) 

• 配置 

  • 容器 
  • 外部化配置 
  • 托管的资源(Java Beans 或其他资源)

什么叫DI?

  • DI即依赖注入,由容器动态的将某个依赖关系注入到组件之中

什么叫AOP?

  • AOP即面向切面编程,是OOP的补充也是一种编程思想,能够让我们在不影响原有功能的前提下,为软件横向扩展功能

Spring常用注解有哪些?

  • @Component        为通用注解;
  • @Repository       为持久层组件注解;
  • @Service          为业务层组件注解;
  • @Controller       为控制层注解;
  • @Autowired,@Resource        为指定Bean之间依赖关系的注解;
  • @ResponseBody     为Ajax返回类型的注解(将java对象转为json格式的数据);

spring中IOC的三种实现机制

  • setter getter 方法注入
  • 构造方法注入
  • 接口注入

spring中实现DI的几种方法

  • set注入 既在实现类中定义出该属性,并实现其set方法,然后在spring配置中进行set的注入
  • 构造方法注入
  • 接口注入

spring容器

  • spring容器负责生成、组装。销毁组件,并负责事件处理等功能。
  • 有BeanFactory、ApplicationContext、WebApplicationContext

Spring的AOP使用简述
大概可分为三步

  • 第一步切面组件,也就是加什么功能?Aspect;
  • 第二步切入点,也就是给谁加?Pointcut;
  • 第三步通知,也就是什么时候加?Advice;

AOP核心概念

  • Aspect(切面)—切面,是对交叉业务逻辑的统称。
  • Joinpoint(连接点)—连接点,指切面可以织入到目标对象的位置(方法,属性等)。
  • Advice(通知)—通知,指切面的具体实现。
  • Pointcut(切入点)—切入点,指通知应用到哪些类的哪些方法或属性之上的规则。
  • Introduction(引入)—引入,指动态地给一个对象增加方法或属性的一种特殊的通知。
  • Weaving(织入)—织入,指将通知插入到目标对象。
  • Target(目标对象)—目标对象,指需要织入切面的对象。
  • Proxy(代理对象)—代理对象,指切面织入目标对象之后形成的对象。

Spring的Bean有以下五种作用域:

  • singleton:SpringIoc容器只会创建该Bean的唯一实例;
  • prototype:每次请求都创建一个实例;
  • request:每次HTTP请求都会产生一个新的bean。
  • session :每次会话创建一个实例;
  • global session :全局的HttpSession中,容器会返回该bean的同一个实例。

 

Bean的生命周期流程如上图所示,流程大致如下:

  • 1.首先容器启动后,会对scope为singleton且非懒加载的bean进行实例化,
  • 2.按照Bean定义信息配置信息,注入所有的属性,
  • 3.如果Bean实现了BeanNameAware接口,会回调该接口的setBeanName()方法,传入该Bean的id,此时该Bean就获得了自己在配置文件中的id,
  • 4.如果Bean实现了BeanFactoryAware接口,会回调该接口的setBeanFactory()方法,传入该Bean的BeanFactory,这样该Bean就获得了自己所在的BeanFactory,
  • 5.如果Bean实现了ApplicationContextAware接口,会回调该接口的setApplicationContext()方法,传入该Bean的ApplicationContext,这样该Bean就获得了自己所在的ApplicationContext,
  • 6.如果有Bean实现了BeanPostProcessor接口,则会回调该接口的postProcessBeforeInitialzation()方法,
  • 7.如果Bean实现了InitializingBean接口,则会回调该接口的afterPropertiesSet()方法,
  • 8.如果Bean配置了init-method方法,则会执行init-method配置的方法,
  • 9.如果有Bean实现了BeanPostProcessor接口,则会回调该接口的postProcessAfterInitialization()方法,
  • 10.经过流程9之后,就可以正式使用该Bean了,对于scope为singleton的Bean,Spring的ioc容器中会缓存一份该bean的实例,而对于scope为prototype的Bean,每次被调用都会new一个新的对象,期生命周期就交给调用方管理了,不再是Spring容器进行管理了
  • 11.容器关闭后,如果Bean实现了DisposableBean接口,则会回调该接口的destroy()方法,
  • 12.如果Bean配置了destroy-method方法,则会执行destroy-method配置的方法,至此,整个Bean的生命周期结束

spring中用到了哪些设计模式,例举几个?

1.简单工厂   2.工厂方法  3.单例模式  4.观察者模式  5.适配者模式

二、SpringMVC框架复习

什么是springMVC?

  • SpringMVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级web框架,其目的就是帮助简化开发。

SpringMVC的好处?

  • 清晰的角色划分
  • 分工明确
  • 无需继承API直接命令操作
  • 与spring无缝连接
  • 灵活的单元测试
  • 更容易的主题和国际化

SpringMVC运行原理?
流程记忆:

  • 用户发起请求到前端控制器(Controller)
  • 前端控制器没有处理业务逻辑的能力,需要找到具体的模型对象处理(Handler),到处理器映射器(HandlerMapping)中查找Handler对象(Model)。
  • HandlerMapping返回执行链,包含了2部分内容: ① Handler对象、② 拦截器数组
  • 前端处理器通过处理器适配器包装后执行Handler对象。
  • 处理业务逻辑。
  • Handler处理完业务逻辑,返回ModelAndView对象,其中view是视图名称,不是真正的视图对象。
  • 将ModelAndView返回给前端控制器。
  • 视图解析器(ViewResolver)返回真正的视图对象(View)。
  • (此时前端控制器中既有视图又有Model对象数据)前端控制器根据模型数据和视图对象,进行视图渲染。
  • 返回渲染后的视图(html/json/xml)返回。
  • 给用户产生响应。

SpringMVC框架组件?

  • DispatcherServlet:前端控制器
  • HandlerMapping:处理器映射器
  • Handler:处理器
  • HandlerAdapter:处理器适配器
  • View Resolver:视图解析器
  • View:视图

SpringMVC和struts2的不同?

  • SpingMVC的入口是一个servlet即前端控制器,而struts2入口是一个filter过滤器。
  • SpringMVC基于方法开发,可以单例也可以多例;struts2基于类开发,只能多例。

SpringMVC常用注解有哪些?

  • @Controller:用于标识处理器类
  • @RequestMapping:请求映射注解
  • @ResponseBody:将controller方法返回对象转为json响应给客户

过滤器和拦截器的区别

  • 过滤器Filter依赖于Servlet容器,基于回调函数,过滤范围大;
  • 拦截器Inerceptor依赖于框架容器,基于反射机制,只过滤请求;

三、mybatis框架复习

1.MyBatis和Hibernate的不同
a)mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。
b)mybatis学习门槛低,简单易学,比hibernate灵活度更高
c)hibernate是一个全表映射的框架;mybatis是一个半自动映射的框架,这里的半自动是针对hibernate而言。

2.使用mybatis的mapper接口调用时有哪些要求?
①  Mapper接口方法名和mapper.xml中定义的每个sql的id相同

②  Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同

③  Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

④  Mapper.xml文件中的namespace即是mapper接口的类路径。(即接口文件和映射文件需要放在同一个包中)

3.SqlMapConfig.xml中配置有哪些内容?

  • SqlMapConfig.xml中配置的内容和顺序如下: 
  • properties(属性)
  • settings(配置)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境集合属性对象)
  • environment(环境子属性对象)
  • transactionManager(事务管理)
  • dataSource(数据源)
  • mappers(映射器)

4.简单的说一下MyBatis的一级缓存和二级缓存?
一级缓存只是相对于同一个SqlSession而言。MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。

5.#{}和${}的区别是什么?

#{}是预编译处理,${}是直接拼接sql语句。 Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值; Mybatis在处理${}时,就是把${}替换成变量的值。 使用#{}可以有效的防止SQL注入,提高系统安全性。

6.mybatis的延迟加载在和spring整合时应该注意什么?

延迟加载在和Spring框架整合时,sqlSession的生命周期交给了框架管理,因此当对象超出sqlsession的生命周期调用时,会报异常,所以获取延迟加载属性应该尽可能确保在serveice层调用,在controller层会报错

7.什么是ORM?

编写程序的时候,以面向对象的方式处理数据。保存数据的时候,却以关系型数据库的方式存储

8.mybatis的核心类以及核心配置文件有哪些?

核心类:sqlsessionFactory、sqlSession

配置文件:mybtais-config.xml 核心配置文件、mapper.xml sql映射文件

9.简单描述mybtais的resultType和resultMap的区别?

使用resultType进行输出映射时,只有当查询出来的列名和pojo中的属性名匹配时才会映射成功,如果查询出来的列名和pojo的属性名不一致时,可以使用resultMap来配置映射关系,并且resultMap可以配置级联查询等复杂查询关系。

10.mybatis的工作流程

1)加载配置文件

2)生成sqlSessionFactory

3)建立sqlsession

4)调用mybtais提供的api

5)查询mybatis配置文件

6)返回结果,关闭sqlsession

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linn-cn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值