一丶怎么理解Spring
1.IOC:inversion of control 控制翻转,创建对象权利的转移,将通过new对象转换为第三方容器配置。
2.DI:denpence injection 依赖注入,通过注解的方式将需要依赖的对象注入到另一个类中,这样降低
了对象与对象之间的耦合,方便以后的扩展和维护。
3.Spring是对j2EE诸多功能进行封装了的一个工具集;它的核心就是提供了一种新的机制来管理业务对象及依赖关系
具体就是控制反转、依赖注入,Aop(面向切面)。
4.Spring的底层实现机制是用Demo4j 解析XML文件,使用反射机制实例化bean。
5…SpringIOC ,其实就是依赖注入、控制反转。
相当于把每个bean与bean之间的关系交给第三方容器管理;而这个容器就是spring。
6.SpringAOP:面向切面的编程,或AOP,是一种编程技术,允许程序模块化横向切割关注点,
或者横切典型的责任划分,主要应用如日志和事务管理。 SpringAop的底层实现机制就是用JDK动态代理:对实现了接口的类生成代理。
概念:Spring 是一个工厂模式的工厂类,主要通过配置文件创建实例对象。
在我认为,Spring就是工厂模式和代理模式进行了一个封装.工厂设计模式(有相同功能的时候就可以使用工厂模式.代替了new,不用每个子类都创建一个对象,直接调用就可以了):
我理解是:比如说一个生产车(就是实例化每一个车类),如果你把这些车放在工厂里边 只用告诉工厂什么产什么车,工厂就能帮你生产了,工厂有生产不同车的部门(工厂是一个接口,每一个生产车部门的都是它的子接口)。只要有一个新品种车需要买,我们就可以新增加一个新品种车的部门,不需要改变工厂和其他品种的部门(就相当于创建一个新的实现类,不用改变原来的代码)
(代理模式:代理对象:和目标对象有一个父接口,对于动态代理可以理解为:在程序运行中,程序把我们对目标对象A的访问转移到对代理对象B的访问,因为代理对象B通过一些手段拿到目标对象的方法,火车票代售点。
三大特征:
控制反转:IOc,通过配置文件实例化类,也就是说将new对象转换为第三方容器配置,不用自己创建对象
依赖注入:给对象属性赋值,有set ,构造方法,还有注解三种模式给对象注入值。
面向切面编程:AOP,面向切面编程,该底层是通过jdk动态代理及数实现的。在我的理解是,aop是处理把与业务无关的事情,比如日志。权限控制等,与实际业务分离的。比如你要在实现这个功能之前后者之后做点什么。比如说输出一个日志,这个时候就使用到了aop
注解:(不用配置每个bean,就是适配器还有映射处理器)在bean容器中配置好全包扫描,在类中配置指定的注解,然后就会扫描该包下的注解,这样就可以对该类进行实例化,还有赋值等操作。
二丶你是怎么理解springMVC的
SpringMvc是基于过滤器对servlet进行了封装的一个框架
-
用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;
-
DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;
-
DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(…)方法)
-
提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中
-
Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;
-
根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;
-
ViewResolver 结合Model和View,来渲染视图
-
将渲染结果返回给客户端。
1)SpringAop编程,通知:before,after,around
2)SpringMVC的配置:
1.导入jar包,添加路径
2.配置spring-mvc.xml在src目录下
3.配置web.xml文件,并在其中配置核心处理器:DispachterServlet
4.在spring-mvc.xml配置3个下属:处理器映射器HandlerMapping,处理器适配器HandlerAdapter,视图解析器ViewResolver
5.编写自己处理器controller.class
6.编写jsp页面,放在放在WEB-INF目录下面,不能放在WEB-INF目录里面
7.测试URL
3)SpringMVC工作原理
1、用户发送请求至核心控制器DispatcherServlet。
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。Controller执行完成返回ModelAndView。HandlerAdapter将controller执行结果ModelAndView返回给 DispatcherServlet。
6、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
7、ViewReslover解析后返回具体View。DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
8、 DispatcherServlet响应用户
三丶mybaties
1.流程:把连数据库xml,还有数据库操作(增删查改)xml这些是配置到mybaties-confice.xml中进行解析(获取文件的值),Controller层到代用InputStrem来读mybaties-confice.xml。