Spring整合

1、Spring整个Web层

1)spring管理Action,使用多例管理

Spring整合Struts的方法

设置struts.objectFactory常量(对象工厂) 的值为spring即对象工厂使用org.apache.struts2.spring.StrutsSpringObjectFactory,原来由struts2自己创建对象改为由spring和struts2联合创建。

struts2的对象工厂工作原理:struts2根据请求url创建action的实例时候,先去spring容器中找有没有匹配的bean,如果有匹配的bean,spring接管了action的创建,如果没有匹配的bean,struts2框架自己进行创建action实例。
2)action需要的service由spring注入。

2、Spring整合业务层

1)spring管理Service接口,使用单例管理
2)使用spring声明式事务控制方式对service接口进行事务控制

基于Aop思想进行事务控制,对service产生代理对象,由代理对象进行事务控制。

<!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
	<!-- 依赖sessionFactory -->
	<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<!-- 事务控制(增强) -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
	<!-- 事务定义信息 
	rollback-for:默认是RuntimeException,才去回滚
	-->
	<tx:attributes>
			
		<tx:method name="insert*" propagation="REQUIRED" />
		<tx:method name="delete*" propagation="REQUIRED" />
		<tx:method name="update*" propagation="REQUIRED" />
		<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
		<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
	</tx:attributes>
</tx:advice>

<!-- aop配置 -->
<aop:config> 
	<!--pointcut的配置必须找到对应的service即目标对象,影响 是否能够生成代理对象  -->
	<aop:advisor advice-ref="txAdvice" pointcut="execution(* com.chyson.wap.service.impl.*.*(..))"/>
</aop:config>

3)service需要dao由spring注入

3、Spring整合持久层
1)spring管理Dao接口(IOC管理,对bean进行实例化,进行依赖注入),使用单例管理

使用HibernateTemplate开发,dao接口实现类继承HibernateDaoSupport
2)Dao接口使用Spring提供的HibernateTemplate模板进行开发

Spring提供org.springframework.orm.hibernate5.HibernateTemplate,作用:简化数据库操作,session由spring管理,由spring控制事务。

<!-- 配置hibernateTemplate -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
	<property name="sessionFactory" ref="sessionFactory"/>
</bean>
3)spring管理sessionFactory,使用单例管理

使用:org.springframework.orm.hibernate5.LocalSessionFactoryBean,sessionFactory由spring管理,spring从工厂中获取Sessoin

<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
	<!-- 依赖dataSource -->
	<property name="dataSource" ref="dataSource"/>
	<!-- 创建工厂需要加载hibernate映射文件 -->
	<property name="configLocations" value="classpath:hibernate/hibernate.cfg.xml"></property>
</bean>
4)spring管理数据源,使用c3p0数据库连接池

<!-- 数据库连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<property name="driverClass" value="${jdbc.driver}" />
	<property name="jdbcUrl" value="${jdbc.url}" />
	<property name="user" value="${jdbc.username}" />
	<property name="password" value="${jdbc.password}" />
</bean>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值