首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Spring是怎么管理Hibernate和Struts的(一)

2012-12-19 
Spring是如何管理Hibernate和Struts的(一)项目做完了,总结一下.该项目是利用SSH技术实现的.下面来谈谈Spri

Spring是如何管理Hibernate和Struts的(一)

项目做完了,总结一下.该项目是利用SSH技术实现的.下面来谈谈Spring是如何管理Struts2和hibernate的.

一:

?? 先说说Spring是如何运作的吧. 在tomcat启动的时候, 先会在web.xml中加载两个句话,

<context-param>   <param-name>contextConfigLocation</param-name>   <param-value>classpath:applicationContext.xml</param-value></context-param>

?

<listener>  <listener-class>     org.springframework.web.context.ContextLoaderListner   </listener-class></listener>

?

在这里,ContextLoaderListener继承了ServletContextListener.因此,Spring会根据contextConfigLocation所指的Applicationcontext.xml自动装配xml文件中所用到的bean对象.

?

在applicationcontext.xml中bean的定义如下

?

<bean id="user" abstract="false" parent="people" scope="prototype">   <property name="dept" ref="dept"  ></property></bean> 

?

当id中需要包含斜杠"/" 等特殊字符时,要将id换乘name的同等的. 还有一个特别说明的是,这里的id和name的值必须是唯一的.

?

?

二: Spring是如何管理hibernate的.以及Spring管理的事务.

?

?? Spring加载之后,会根据applicationcontext.xml文件中的配置来装配实例.

?

??

<bean name="sessionFactory" value="classpath:hibernate.cfg.xml"></property>    </bean>

??他会根据hibernate.cfg.xml所配置的加载hibernate配置信息.并实例化sessionFactory.并且如果Dao要受Spring管理, 那么此Dao类需要继承HibernateDaoSupport.

?

Spring提供的事务管理有两种方式,编程式的和申明式的. 编程式的繁琐,我一般不喜欢用.最喜欢的一种是利用Spring封装的aspectJ, 利用Aop来管理事务很方便的.

?

首先创建一个事务管理器

?

<bean id="transactionManager" ref="sessionFactory">    </property></bean>

?

声明一个通知, 并声明此通知受某一个事务管理器管理

?

?

<tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes>   <tx:method name="save*" />   <tx:method name="*" readonly="true" /></tx:attributes></tx:advice>

?

上面的一段话说明了txAdvice受transactionManager事务管理器管理, 并且管理save打头的方法. 其余的都不使用事务管理.

?

最后利用advisor配置advice的切入点.

?

?

<aop:config>  <aop:advisor advice-ref="txAdvice" pointcut="execution(pulic * *..*.service.*.*(..))">   </aop:advisor></aop:config>

?

?

这样, 只要经过service层就会进入事务管理.

?

?

?

热点排行