一个叫Spring的框架,“SSH”框架之总结(Hibernate、Spring、SpringMVC)
2017-07-29 09:54
369 查看
通过学习一个叫Hibernate(冬眠)的框架后,进而学习一个叫Spring(春)的框架!!
在hibernate中我们主要是整合了DAO层对数据库的CRUD操作,而Spring主要是是为了让我们对标准三层架构(MVC)进行整合!ps:一下是一些我的总结(可能会有点乱,具体可以参看个人项目代码)
ps:代码网盘链接:http://pan.baidu.com/s/1c2ISyjA 密码:bx4r(项目名未规范,但顺都是从小到大!)
1、Spring的主要思想:
概念:控制反转(IOC):一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。(在service层中声明了一个dao层对象,这是可以不用自己new一个dao层实例对象,而是交给spring来创建)
依赖注入(DI):通过IOC创建了实例对象后,再把实例对象赋值到对象声明的地方,以完成new实例对象并赋值的操作!
面向切面(AOP):面向对象的功能延伸。不是替换面向对象,是用来解决OOP中一些问题。
优点:
IOC、DI:这样就能完成service层和dao层的解耦合!实现低耦合(默认创建对象的方式是:scope=单例)
AOP:方便的实现对程序进行权限拦截、运行监控等功能
2、AOP的相关概念
A)业务场景:在service层提供30个模块的服务。同时这些模块都依赖某个或某几个公共服务。(权限管理、事务管理、日志管理)
传统方式:使用继承的方式,30个模块都去继承那几个公共服务(然而:想想java是单继承后是不是很恐怖?)
AOP做法:把公共服务定义成“通知类”,而那30个模块的服务定义成“切入点类”;然后把通知类和切入点类结合成“切面”。(这样程序猿们就可以安心做service层业务,也就是这30个模块的服务,而不用在意那几个公共服务...)
B)AOP里的一些知识概念:
Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点.
Pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义.
Advice(通知/增强):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)
Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或Field.
Target(目标对象):代理的目标对象
Weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程.
spring采用动态代理织入,而AspectJ采用编译期织入和类装在期织入
Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类
Aspect(切面): 是切入点和通知(引介)的结合
ps:下图可以看出AOP的具体分布图
3、Spring初体验...
主要技术:1、hibernate工具类来定义、获取、使用session
2、DAO层通过HQL语句进行数据查询
3、POJO类(domain)是用注解的方式与数据库的表关联的!
4、IOC
百度网盘可看代码
4、SpringAOP手动配置执行...
主要开发步骤:1、目标类
2、通知类(实现对应接口,从而分清是哪一类通知)
3、代理类(配置AOP编程)
A)绑定目标类
B)绑定通知类
C)绑定接口关联
百度网盘可看代码
5、Spring自动配置AOP编程...
主要开发步骤:目标类
通知类(实现对应接口)
代理类(自动配置AOP编程)
A)切入点表达式
B)切入点类与通知类绑定
百度网盘可看代码
6、AsjectJ的XML方式完成AOP编程...
主要开发步骤:目标类
通知类(可都写在一个随便命名的类中,用不同方法表示不同通知,具体区分用参数列表决定)
AspectJ创建AOP编程
百度网盘可看代码
7、AsjectJ的注解方式AOP编程...
主要开发步骤:目标类用注解完成
通知类用注解完成
开启全局注解扫描 、开启AspectJ的注解
百度网盘可看代码
8、冬眠过后的春天(Spring和Hibernate整合之一)
SH整合步骤(“天龙八步”):1、导入依赖的jar包(pom.xml)
2、创建Hibernate主配置文件(hibernate.cfg.xml)
3、创建逆向工程时用到的配置文件(hibernate.reveng.xml)
4、使用逆向工程生成POJO类和映射文件,补全hibernate.cfg.xml中的mapping参数设置
5、DAO层代码开发(HibernateTemplate对象来操作session)
6、Service层代码开发
7、配置Spring主配置文件参数(applicationContext.xml)
8、测试(因为没有定义action层,所以这里使用测试类)
百度网盘可看代码
9、冬眠过后的春天(Spring和Hibernate整合之二)
SH整合步骤(“天龙八步”):1、导入依赖的jar包(pom.xml)
2、创建Hibernate主配置文件(hibernate.cfg.xml)
3、创建逆向工程时用到的配置文件(hibernate.reveng.xml)
4、使用逆向工程生成POJO类和映射文件,补全hibernate.cfg.xml中的mapping参数设置
5、DAO层代码开发(继承了HibernateDaoSupport类来操作session)
6、Service层代码开发
7、配置Spring主配置文件参数(applicationContext.xml)
8、测试(因为没有定义action层,所以这里使用测试类)
ps:因为“applicationContext.xml”中整合了“hibernate.cfg.xml”的所有配置参数,所以“hibernate.cfg.xml”文件可以删除;而“hibernate.reveng.xml”文件在生成POJO类后就可以删除!
百度网盘可看代码
10、SpringMVC体验一...
XML方式:根据name来查找!!!A)web.xml
配置中央控制器(前端控制器) :org.springframework.web.servlet.DispatcherServlet
B)applicationContext.xml
配置处理器映射器(HandlerMapping):
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
配置处理器适配器(HandlerAdapter):
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
配置视图解析器(view resolver):
org.springframework.web.servlet.view.InternalResourceViewResolver
配置Action:因为是"BeanNameUrlHandlerMapping",所以根据name来查找!!
C)action层
因为是"BeanNameUrlHandlerMapping",
所以实现"import org.springframework.web.servlet.mvc.Controller;"接口
百度网盘可看代码
11、SpringMVC体验二...
XML方式:根据id来查找!!!A)web.xml
配置中央控制器(前端控制器) :org.springframework.web.servlet.DispatcherServlet
B)applicationContext.xml
配置处理器映射器(HandlerMapping):
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
配置处理器适配器(HandlerAdapter):
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
配置视图解析器(view resolver):
org.springframework.web.servlet.view.InternalResourceViewResolver
配置Action:因为是"SimpleUrlHandlerMapping",所以根据id来查找!!
C)action层
因为是"SimpleUrlHandlerMapping",
所以实现"import org.springframework.web.HttpRequestHandler;"接口
ps:处理映射器和处理器适配器的类,在体验一和体验二中不同,要注意相互配对!!
百度网盘可看代码
12、SpringMVC体验三...
注解方式:(重点!!)A)web.xml
配置中央控制器(前端控制器) :org.springframework.web.servlet.DispatcherServlet
B)applicationContext.xml
Spring自动配置注解处理器映射器和注解处理器适配::
<mvc:annotation-driven></mvc:annotation-driven>
配置视图解析器(view resolver):
org.springframework.web.servlet.view.InternalResourceViewResolver
配置添加注解扫描(扫描com.wq.action层的注解)
<context:component-scan base-package="com.wq.action"></context:component-scan>
C)action层(具体注解请参考代码)
@Controller//标示为控制器
@RequestMapping("/addType.do")//访问路径
ps:这个项目的代码请熟练掌握,因为一般在Action层都是使用注解的方式进行编程!
百度网盘可看代码
13、SSH初体验...
SpringMVC:Spring:HibernateSSH八大步骤:
1、pom.xml导入依赖包
2、web.xml 前段处理器、过滤器
3、hibernate.cfg.xml、hibernate.reveng.xml
4、POJO、映射文件
5、Dao层接口和实现类、service层接口和实现类
6、applicationContext.xml文件整合Service层和Dao层(可删除hibernate.cfg.xml、hibernate.reveng.xml)
7、Action层和View层
8、applicationContext.xml文件整合action层
百度网盘可看代码
14、SSH框架实现学生管理系统...
百度网盘可看代码15、常见的Bug:
A)加载ApplicationContext.xml文件的时候,没有写文件名(第五行代码)B)在写applicationContext.xml时,“property”标签中关联对象用ref,关联属性、数据类型用value(第26行代码)
C)当使用Spring自动模式配置AOP编程时,getBean()时定义的类型一定要是接口类类型,不能使实现类类型(第14行)
D)SH整合时,通过下面的Hibernate主配置文件参数会默认开启“事务”,但是Hibernate主配置文件参数”hibernate.connection.autocommit”默认的是“false”,所以会报“无效事务”的Bug
E)新建一个项目,只在项目名和Java Resource上报错,在Problems中提示如下信息;修改方法如图二所示,找到该文件,然后如图修改“version”!
(图一)
(图二)
相关文章推荐
- Ssh为 struts+spring+hibernate的一个集成框架
- SSH三大框架整合的流程是怎样走的,spring在三大框架中式怎么的一个流程,hibernate是怎么的一个流程,struts2是怎么的一个流程的,
- MVC三层模(struts+spring+hibernate(SSH)总结
- SSH(struts+spring+hibernate)框架
- Eclipse上搭建SSH(struts-2.2.3 + spring-2.5.6 + hibernate-3.6.8)框架-附源码
- 要搭一个mybatis的框架把以前的ssh的hibernate换掉,心累
- Spring+Hibernate+Struts(SSH)框架整合实战
- SSH中 struts hibernate spring 各框架各起什么作用
- spring+spring mvc+hibernate框架调试错误总结
- 待看-springMVC系列之(四) spring+springMVC+hibernate 三大框架整合
- 对SSH(Struct、Spring、Hibernate)框架的理解
- ssh整合思想初步 structs2 Spring Hibernate三大框架各自要点
- MVC三层模(struts+spring+hibernate(SSH)总结
- [转] 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓
- Maven学习笔记(九)-Maven整合SSH(Spring+SpringMVC+Hibernate)框架
- 使用spring、springmvc和hibernate开发博客(一)——搭建框架
- SSH : struts、spring、hibernate等框架的整合
- 【Java】【SSH】Web 开发经典框架Spring+Struts+Hibernate官方网站下载地址
- SSH(spring+hibernate+struts)框架
- SSH(Struts,Spring,Hibernate)和SSM(SpringMVC,Spring,MyBatis)的区别