想必用过
以下是详解Spring的applicationContext.xml文件代码:<!– 头文件,主要注意一下编码 –>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"""><beans>
<!– 建立数据源 –>
<bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource">
<!– 数据库驱动,我这里使用的是Mysql数据库 –>
<propertyname="driverClassName"><value>com.mysql.jdbc.Driver</value> </property>
<!– 数据库地址,这里也要注意一下编码,不然乱码可是很郁闷的哦! –>
<property name="url"><value>jdbc:mysql://localhost:3306/tie?useUnicode=true&characterEncoding=utf-8 </value> </property>
<!– 数据库的用户名 –>
<property name="username"><value>root</value> </property>
<!– 数据库的密码 –>
<property name="password"><value>123</value> </property></bean>
<!– 把数据源注入给Session工厂 –>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"><ref bean="dataSource" /> </property>
<!– 配置映射文件 –>
<property name="mappingResources"><list><value>com/alonely/vo/User.hbm.xml</value></list> </property></bean>
<!– 把Session工厂注入给hibernateTemplate –><!– 解释一下hibernateTemplate:hibernateTemplate提供了很多方便的方法,在执行时自动建立 HibernateCallback 对象,例如:load()、get()、save、delete()等方法。 –>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <constructor-arg><ref local="sessionFactory" /> </constructor-arg></bean>
<!– 把DAO注入给Session工厂 –>
<bean id="userDAO" class="com.alonely.dao.UserDAO"> <property name="sessionFactory"><ref bean="sessionFactory" /> </property></bean>
<!– 把Service注入给DAO –>
<bean id="userService"class="com.alonely.service.UserService"> <property name="userDAO"><ref local="userDAO" /> </property></bean>
<!– 把Action注入给Service –>
<bean name="/user"class="com.alonely.struts.action.UserAction"> <property name="userService"><ref bean="userService" /> </property></bean></beans>
对里面的一些概念还不熟悉,一个字"晕"啊,在网上搜搜资料,解释一下applicationcontext.xml
我们以项目中的订单Order为例简要说明一下Spring与Hibernate的集成。关于如何使用Hibernate来对数据库表做映射,我们在前面已经做了介绍,这里我们关心的是如何配置Spring,使它能管理Hibernate。其实,只要在Spring的配置文件(我们这里是applicationContext.xml)中配置一个叫做sessionFactory的bean,Spring就可以和Hibernate联系起来了。
<beanid="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"><property name="configLocation"><value>com/ascent/bean/hibernate.cfg.xml</value></property></bean>
这样,Spring和Hibernate的第一步整合就完成了,现在到了关键的地方——如何让Spring和Hibernate双剑合璧来实现业务逻辑?
还是在applicationContext.xml文件中先做一个配置。
<beanid="transactionManager"class="org.springframework.orm.hibernate.HibernateTransactionManager"><property name="sessionFactory"><ref local="sessionFactory"/></property> </bean>
在上面你大概可以感觉到Spring给我们带来的好处了,,Spring的IoC模式可以统一管理各层,而又使各层松散耦合在一起,使各层之间实现最大的解耦性,这也是Web架构一向的追求。
但是,Spring带来的好处还不止于此,除了IoC还有AOP,Spring可以运用AOP来实现很多功能,最常用的就是事务处理。这里我们用了业务服务(business service)层和数据存取对象(Data Access Object)层,在业务服务层我们增加事务处理,数据存取对象层负责数据读写。
首先,组装配置好Service Beans。
<beanid="orderService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><property name="transactionManager"><ref local="transactionManager"/></property><property name="target"><ref local="orderTarget"/></property><property name="transactionAttributes"><props><propkey="find*">PROPAGATION_REQUIRED,readOnly,-OrderException</prop><propkey="save*">PROPAGATION_REQUIRED,-OrderException,-OrderMinimumAmountException</prop></props></property> </bean>
之后,需要把业务服务对象和数据存取对象也组装起来,并把这些对象配到一个事务管理器(transaction manager)里。
前有阻碍,奋力把它冲开,运用炙热的激情,