1 使用aop进行事务代理
<bean id="TransactionManager" class="hibernate3.HibernateTransactionManager"
abstract="false" lazy-init="default" autowire="default" dependency-check="default">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
1.1.1 对单个bean进行代理
<bean id="BookBOProxy" class="ansaction.interceptor.TransactionProxyFactoryBean"
abstract="false" lazy-init="default" autowire="default" dependency-check="default">
<property name="transactionManager">
<ref bean="TransactionManager" />
</property>
<property name="target">
<ref bean="BookBO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="update*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
1.1.2 通过继承进行简化
<bean id="baseTxService" class="ansaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager" ref="transactionManager"></property>
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="usersTarget" class="org.better.hr.biz.UsersBiz">
<property name="usersDao" ref="usersDAO"></property>
</bean>
<bean id="usersService" parent="baseTxService">
<property name="target" ref="usersTarget"></property>
</bean>
1.2 bean名自动代理
<bean id="TransactionInterceptor" class="ansaction.interceptor.TransactionInterceptor"
abstract="false" lazy-init="default" autowire="default" dependency-check="default">
<property name="transactionManager">
<ref bean="TransactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<!-- 根据beanName自动创建事务代理 -->
<bean id="creator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"
abstract="false" lazy-init="default" autowire="default" dependency-check="default">spring aop应用场景
<property name="beanNames">
<value>*BO</value>
</property>
<property name="interceptorNames">
<list>
<value>TransactionInterceptor</value>
</list>
</property>
</bean>
1.3 spring2.0的配置方式
<beans xmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"
xmlns:aop="/schema/aop"
xmlns:tx="/sch
ema/tx"
xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-2.0.xsd /schema/tx /schema/tx/spring-tx-2.0.xsd /schema/aop /schema/aop/spring-aop-2.0.xsd">
................................
<bean id="TransactionManager"
class="hibernate3.HibernateTransactionManager"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<tx:advice id="TxAdvice" transaction-manager="TransactionManager">
<tx:attributes>
<tx:method name="update*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="BOMethods" expression="execution(public * com.spring2_transTest.bo.*.*(..))"/>
<aop:advisor pointcut-ref="BOMethods" advice-ref="TxAdvice"/>
</aop:config>
</beans>
2 使用aop进行权限控制
/**
* 使用aop实现权限管理
*
* @author cl
*
*/
public class AuthorityInterceptor implements MethodInterceptor {
public Object invoke(MethodInvocation arg0) throws Throwable {
HttpServletRequest request = null;
HttpServletResponse response = null;
/
/ 读取函数调用的参数
Object[] args = Arguments();
for (int i = 0; i < args.length; i++) {
if (args[i] instanceof HttpServletRequest)
request = (HttpServletRequest) args[i];
if (args[i] instanceof HttpServletResponse)
response = (HttpServletResponse) args[i];
}
//tom.sayHello(?);
//a.invoke(tom,?);
User user=(Session().getAttribute("self");
/
/如果登录过则可以访问
if(user!=null)
return arg0.proceed();
else{
String a = Header("referer");
ActionForward forward=new ActionForward("login.jsp");
forward.setRedirect(true);
return forward;
}
}
}
<bean id="AuthorityInterceptor" class="com.accp.forum.aop.AuthorityInterceptor" abstract="false"
lazy-init="default" autowire="default" dependency-check="default">
</bean>
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator" abstract="false
" lazy-init="default" autowire="default" dependency-check="default">
<property name="beanNames">
<list>
<value>/toNewTopic</value>
<value>/toReply</value>
<value>/newReply</value>
<value>/newTopic</value>
<value>/deleteReply</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>AuthorityInterceptor</value>
</list>
</property>
</bean>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。