一、Spring框架
- Spring框架主要的Spring IOC(控制反转)和Spring AOP(面向切面)为思想内核。
- SpringIOC控制反转,即将创建对象和销毁对象的控制权交给了Spring容器。
首先将需要的Bean对象保存在bean.properties配置文件中,例如UserDao=com.xxx.dao.UserDaoImpl,在创建Spring容器时,将这些配置的非懒加载单例Bean对象创建,并保存在HashMap中,key为属性(UserDao),value为根据该值创建出来的对象。在需要的时候从Spring容器中取即可。 - 依赖注入
1)手动注入,例如将Dao注入到Service中,即在bean.xml文件中定义Dao和Service的bean,然后将Dao的bean的id通过property属性进行注入到Service中(property是在Service的bean标签内)。
定义一个Service类,定义Dao对象,为其创建get,set方法。
最后在容器中创建完Bean对象后,从容器中Service对象,然后再通过Service对象获取Dao对象即可完成依赖注入。
2)自动注入autowire
byName:在Spring容器中查找id与属性名相同的Bean,并进行注入。需要提供set方法。
byType:在Spring容器中查找类型与属性类型相同的bean,并进行注入。需要提供set方法。即根据类对象的类型进行匹配。
constructor:在Spring容器中查找id与属性名相同的bean,并进行注入。需要提供构造方法。
二、Spring体系结构
- Core Container:Spring核心模块,任何功能的使用都离不开该模块,是其他模块建立的基础。也就是Spring容器。
- Data Access/Integration:该模块提供了数据持久化的相应功能。即数据存取或数据整合模块。
- Web:该模块提供了Web开发的相应功能。
- AOP:提供了面向切面编程实现。
- Aspects:提供了与AspectJ框架的集成,该框架是一个面向切面编程框架。
- Instrumentation:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。
- Messaging:为Spring框架集成了一些基础的报文传送应用。
- Test:提供与测试框架的集成。
三、SpringMVC框架
MVC全称Model View Controller,是一种设计创建Web应用程序的模式。
- Model(模型):指数据模型。用于存储数据以及处理用户请求的业务逻辑。在Web应用中,JavaBean对象,业务模型等都属于Model。即相当于dao、service、实体类等都是属于模型。
- View(视图):用于展示模型中的数据,一般为jsp或html文件。
- Controller(控制器):是应用程序中处理与用户交互的部分。接受视图提出的请求,将数据交给模型处理。并将处理后的结果交给视图显示。
- SpringMVC是一个基本MVC模式的轻量级Web框架,是Spring框架中的一个模块,和Spring可以直接整合使用。
- SpringMVC代替了Servlet技术,它通过一套注解,让一个简单的Java变成处理请求的控制器,而无须实现任何接口。
四、SpringMVC框架的执行流程
SpringMVC的组件
- DispatcherServlet:前端控制器,接受所有请求,调用其他组件。
- HandlerMapping:处理器映射器,根据配置找到方法的执行链。
- HandlerAdapter:处理器适配器,根据方法类型找到对应的处理器。
- ViewResolver:视图解析器,找到指定视图。
SpringMVC的工作流程
- 客户端将请求通过浏览器发给前端控制器。
- 前端控制器将请求发送给处理器映射器,处理器映射器根据路径找到方法的执行链,将方法的执行链返回给前端控制器。
- 前端控制器将方法执行链发送给处理器适配器,处理器适配器根据方法类型找到对应的处理器。
- 处理器执行方法,将结果返回给前端控制器。
- 前端控制器将结果发送给视图解析器,视图解析器找到视图文件位置。
- 视图渲染数据,并将结果显示到客户端。
五、MyBatis框架
- ORM(Object Relation Mapping)框架,对象关系映射,即在对象和数据库之间做映射处理。
- MyBatis是一个半自动ORM(Object Relation Mapping)框架,它的本质是对JDBC的封装,因为使用MyBatis框架不需要编写JDBC代码,但是需要编写SQL语句。
- 使用JDBC操作数据库,必须手动进行对象和数据库之间的数据转换。而使用ORM框架代替JDBC后,框架可以自动进行数据库和对象之间的转换,极大的增强了开发效率。