1. 运用Spring来替代工厂类:
使用applicationContext.xml配置文件来替代之前的工厂类
<bean id="userDao" class="com.syy.dao.imp.GenericDaoImphibernate">
<constructor-arg value="com.syy.model.pojo.User"></constructor-arg>
</bean>
2. 实现控制反转/依赖注入:
1. 声明的对象的同时,需要提供对象的Set方法
2. 实例化对象并不是由创建对象的类本身来负责
3. 而是由调用该对象的类来负责实例化该对象
代码:
Manager实现类
public class GeneircManagerImp<T, K extends Serializable>
implements GeneircManager<T, K> {
//声明GeneircDao的对象genericDao
protected GeneircDao<T, K> genericDao;
//为该对象提供set方法(以便对其进行注入信息)
public void setGenericDao(GeneircDao<T, K> genericDao) {
this.genericDao = genericDao;
}
}
applicationContext.xml 配置文件
/*
* userDao对象由com.syy.dao.imp.GenericDaoImphibernate类来负责实例化
* 为userDao的构造函数注入参数com.syy.model.pojo.User
* 对持有的sessionFactory注入信息
*/
<bean id="userDao" class="com.syy.dao.imp.GenericDaoImphibernate">
<constructor-arg value="com.syy.model.pojo.User"></constructor-arg>
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
/*
* userManager对象由com.syy.manager.imp.GeneircManagerImp类来负责实例化
* 对持有的genericDao注入信息
*/
<bean id="userManager" class="com.syy.manager.imp.GeneircManagerImp">
<property name="genericDao" ref="userDao"/>
</bean>
3. 与Hibernate想关联,封装Dao的基本方法
Dao的实现类通常继承HibernateDaoSupport类
调用getHibernateTemplate().……;方法来实现对pojo进行相应的操作
代码:
public class GenericDaoImphibernate<T,K extends Serializable >
extends HibernateDaoSupport implements GeneircDao<T,K>{
……
public T save(T object) {
//实现保存操作
T entity = (T) this.getHibernateTemplate().merge(object);
return entity;
}
……
}
4. 与Struts2相关联
将Struts2的objectFactory(Action类)交给Spring来实例化
Struts.xml
<!-- 指定Struts 2默认的ObjectFactory Bean,该属性默认值是spring -->
<constant name="struts.objectFactory" value="spring"/>
这个监听器是在tomcat装载项目的时候启动的
Web.xml
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
5 实现使用多个applicationContext.xml 配置文件
/*
* 在com/syy文件夹下以applicationContext开头的xml文件都将被加载进去
*/
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:com/syy/applicationContext*.xml
</param-value>
</context-param>
使用applicationContext.xml配置文件来替代之前的工厂类
<bean id="userDao" class="com.syy.dao.imp.GenericDaoImphibernate">
<constructor-arg value="com.syy.model.pojo.User"></constructor-arg>
</bean>
2. 实现控制反转/依赖注入:
1. 声明的对象的同时,需要提供对象的Set方法
2. 实例化对象并不是由创建对象的类本身来负责
3. 而是由调用该对象的类来负责实例化该对象
代码:
Manager实现类
public class GeneircManagerImp<T, K extends Serializable>
implements GeneircManager<T, K> {
//声明GeneircDao的对象genericDao
protected GeneircDao<T, K> genericDao;
//为该对象提供set方法(以便对其进行注入信息)
public void setGenericDao(GeneircDao<T, K> genericDao) {
this.genericDao = genericDao;
}
}
applicationContext.xml 配置文件
/*
* userDao对象由com.syy.dao.imp.GenericDaoImphibernate类来负责实例化
* 为userDao的构造函数注入参数com.syy.model.pojo.User
* 对持有的sessionFactory注入信息
*/
<bean id="userDao" class="com.syy.dao.imp.GenericDaoImphibernate">
<constructor-arg value="com.syy.model.pojo.User"></constructor-arg>
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
/*
* userManager对象由com.syy.manager.imp.GeneircManagerImp类来负责实例化
* 对持有的genericDao注入信息
*/
<bean id="userManager" class="com.syy.manager.imp.GeneircManagerImp">
<property name="genericDao" ref="userDao"/>
</bean>
3. 与Hibernate想关联,封装Dao的基本方法
Dao的实现类通常继承HibernateDaoSupport类
调用getHibernateTemplate().……;方法来实现对pojo进行相应的操作
代码:
public class GenericDaoImphibernate<T,K extends Serializable >
extends HibernateDaoSupport implements GeneircDao<T,K>{
……
public T save(T object) {
//实现保存操作
T entity = (T) this.getHibernateTemplate().merge(object);
return entity;
}
……
}
4. 与Struts2相关联
将Struts2的objectFactory(Action类)交给Spring来实例化
Struts.xml
<!-- 指定Struts 2默认的ObjectFactory Bean,该属性默认值是spring -->
<constant name="struts.objectFactory" value="spring"/>
这个监听器是在tomcat装载项目的时候启动的
Web.xml
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
5 实现使用多个applicationContext.xml 配置文件
/*
* 在com/syy文件夹下以applicationContext开头的xml文件都将被加载进去
*/
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:com/syy/applicationContext*.xml
</param-value>
</context-param>