在整合之前,首先大家要了解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,根據注入的類型查找,如果找到就講類型相同的類的對象注入進去,否則就不注入。