xml配置文件整合SSH(Spring4/Struts2.3/Hibernate5)
整合原理
将MVC三层对象交由Spring创建与管理.我们配置好需要Spring管理的类后(Spring配置文件或者注解都可以实现),由Spring进行属性注入,本质就是当项目启动后,SpringIOC容器根据我们所配置的类创建反射该类的对象,然后通过构造注入或者属性注入(这里是JavaBean属性注入,不是成员变量,所以类中一定要有setter方法).
对象的依赖关系
- Struts2中的核心对象Action(类似于Servlet)依赖于Service对象(泛指业务逻辑类)
- Service对象依赖于Dao(数据访问层类)对象
- Dao对象依赖于SessionFactory对象
- SessionFactory对象依赖于DataSource对象
事物的依赖关系
-
Service对象中的切点方法需要织入(weaver)事务通知
-
事务通知依赖于事务管理器对象
-
事务管理器对象依赖于SessionFactory对象
导包
- Hibernate依赖包(required)
- Struts2依赖包(注意Struts2与Hibernate中的CGLIB包重复请删除低版本的jar包:javassist包)
- Struts2整合Spring包:struts2-spring-plugin
- Spring包+aop联盟包+aspectj+数据库驱动包+C3P0连接池包
Spring整合web项目
- 在src目录下创建applicationContext.xml文件,读取db.properties配置文件,配置数据库连接池信息(Spring配置文件)
- 在项目的web.xml配置文件中配置Spring启动监听器,类名ContextLoaderListener(使得在项目启动时创建IOC容器)
搭建Struts2
- 准备Action类(这里我们继承ActionSupport类完成)
- 在src目录下创建struts.xml文件,配置Action
- 在web.xml中配置Struts2的核心过滤器,类名StrutsPrepareAndExecuteFilter(注意这个过滤器要放在其它过滤器之后,因为过滤器的执行顺序就是按照你配置的顺序执行的)
Spring整合Struts2
- 在struts.xml中配置常量<constant name="struts.objectfactory" value="spring" />,将struts2中的对象Action交由Spring管理
- 在Action中添加Service属性,并将Action与Service实现类注入Spring
- 将struts.xml中的action标签的class属性值修改为applicationContext.xml中Action注入配置的name属性值
搭建Hibernate
-
创建实体类
-
在实体类包路径下创建"实体类名.hbm.xml"文件,配置实体类对象关系映射文件
-
在src目录下创建hibernate.cfg.xml主配置文件(数据库方言/SQL语句显示与格式化/引入映射配置等)
Spring整合Hibernate
-
在applicationContext.xml文件中配置如下,读取hibernate主配置文件
准备Dao并注入Spring容器(略)
配置AOP事务
- 在applicationContext.xml配置事务管理器,Hibernate事务管理器实现类:hibernateTransactionmanager
- 在applicationContext.xml配置事务通知
- 在applicationContext.xml配置切面