SSM和SSH是比较流行的Web框架,今天主要说下SSM(其实是我不了解SSH,哈哈);话不多说进入正题,SSM主要构成Spring,SpringMVC,Mybatis三大部分组成,分别说一下他们的作用;
首先关于框架的概念: 框架:在这里特指软件框架,它是我们在实际开发中解决项目需求的技术集合。运用框架可以大大简化我们的代码编写,缩短开发周期。同时,对后续项目维护在面对开发团队人员更迭时降低了门槛,对系统升级提供灵活可控的标准。当然,框架提高了我们的开发效率,降低维护成本的同时,也要求我们在使用时遵循它的规范,要按照它的使用要求编写代码。最后,需要注意的是,它不是系统架构。
框架的作用:
提高开发效率 ,增强可重用性, 节约维护成本,提供编写规范 ,解耦底层实现原理。
Spring: 主要是管理项目中javaBean的生命周期,简化了代码编写,降低了代码的耦合度,提高了代码的复用性,
主要有两大核心:1,**IOC容器控制反转:**控制反转,主要作用 创建对象,管理对象(依赖注入),整合对象,配置对象以及管理对象的生命周期;
补充问题:有哪些不同类型的IOC依赖注入?
构造器依赖注入:在容器触发构造器的时候完成,每一个参数代表注入的对象;
Setter方法依赖注入:容器出发一个无参构造方法或者无参构造静态工厂实例化对象的时候,容器调用Bean中的Setter方法完成Setter方法依赖注入;,
2,AOP面向切面编程: 全称是Aspect Oriented Programming。即:面向切面编程。它主要把我们业务逻辑中的各个部分进行隔离,使每个部分独立开来,在需要用到那个部分的时候,使用动态代理的技术,对已有的方法进行增强,大大优化了事务的操作;
3,AOP主要有两种动态代理: 1,jdk动态代理:
利用拦截器(拦截器必须实现InvocationHanlder)加上反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
**2,cglib动态代理:**利用ASM开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。
jdk动态带和cglib动态代理的区别: JDK动态代理只能对实现了接口的类进行动态代理;Cglib 主要是针对类进行代理,主要是动态的生成被代理的子类,主要还是继承,因此不能用final类或方法
SpringMVC: MVC分别是model,view,controller,分别是模型(类似于javaBean),视图(展示模型中的数据),控制器(把不同的数据模型展现到不同的视图上);
原理:流程图一般面试都会问
mybatis: 主要是负责Dao层持久层框架,动态绑定sql语句对数据库进行操作,底层是对jdbc的封装,每次与数据库交互时,通过sqlSessionFactory拿到sqlSession,在执行sql命令。(这个写的有点简陋了哈哈哈哈,有补充的欢迎找我交流,闲的太无聊了!!!)