在整合之前,首先大家要了解SS2H到底是指什么?那么现在我们就来说一下SS2H框架;
S表示Spring框架;S2表示的是Struts 2 框架;H表示Hibernate框架。
Spring框架:Spring框架的核心是,依赖注入,何为依赖注入呢?依赖注入就是一个对象与另外的一个对象存在依赖关系,那么,平时我们普通的写法就是,在一个实体中使用“NEW”关键字进行实例,那么,Spring则是通过配置文件的方式将一个接口或一个类的对象注入到另外一个实体类中去,那么在这个实体类中我们就可以使用了注入进来的实体或接口的对象了,但是,我拿到注入进来的对象不是实例的对象而是一个代理对象,下面就来看一下Spring的依赖注入吧;
这是一个用户的接口:
package com.jboa.dao;
import java.io.Serializable;
import java.util.List;
import com.jboa.bean.SysEmployee;
/**
* 用户处理接口
* @author hrq
*
*/
public interface ISysEmployeeDao {
/**
*查询用户
* @param condition 用户实体
* @return 如果condition!=null返回一个实体,否则返回所有的用户信息
* @throws Exception 抛出异常
*/
public List<SysEmployee> find(SysEmployee condition)throws Exception;
/**
* 查询用户
* @param id 用户ID
* @return
* @throws Exception
*/
public SysEmployee get(Serializable id)throws Exception;
/**
* 修改用户
* @param emloyee 用户实体类对象
* @throws Exception
*/
public void update(SysEmployee emloyee) throws Exception;
}
员工业务处理实现类:
package com.jboa.biz.impl;
import java.io.Serializable;
import java.util.List;
import com.jboa.bean.BizCheckResult;
import com.jboa.biz.ICheckResultBiz;
import com.jboa.dao.ICheckResultDao;
/**
* 员工业务处理实现类
* @author hrq
*
*/
public class CheckResultBizImpl implements ICheckResultBiz {
private ICheckResultDao resultDao;
public List<BizCheckResult> findRusltListById(Serializable id)
throws Exception {
// TODO Auto-generated method stub
return resultDao.findRusltListById(id);
}
public void save(BizCheckResult checkResult) throws Exception {
// TODO Auto-generated method stub
resultDao.save(checkResult);
}
public void setResultDao(ICheckResultDao resultDao) {
this.resultDao = resultDao;
}
public void delResult(Serializable id) throws Exception {
// TODO Auto-generated method stub
resultDao.delResult(id);
}
}
在上面我们可以看到,在员工业务处理类中我们需要使用员工的数据库访问层的员工Dao实现类的对象,但是在使用过程没有任何问题,这是为什么呢?现在我们就来见证spring的请打之处吧
spring的applicationContext.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
default-dependency-check="objects"
>
<!-- Em【员工业务处理】Biz配置 -->
<bean id="emBiz" class="com.jboa.biz.impl.SysEmployeeBizImol" autowire="byName">
<!-- <property name="emDao" ref="emDao"></property>-->
</bean>
我们可以看到,在这个配置文件中有一个<beans>和一个<bean>节点,这里只说一下<bean>节点,bean节点主要配置需要注入类的配置,其中id为唯一标识,也相当于是这个类的别名,如果在其他类需求注入该类时我们所需要的就是这个id的值,class指定的是该类的完全限定名称,autowire属性是注入方式,该属性有几个值,在这里主要说明一下两个常用的,byName根据属性名称与ID的值相匹配,如果类中的属性名称与配置文件中的配置节点的ID的属性值相匹配,那么就将该对象注入进去;byType,根据注入的类型查找,如果找到就讲类型相同的类的对象注入进去,否则就不注入。