目录springmvc.xmlBankDaoAdminCheckBankDaoImplLogInfoTransmactionAdminCheckInterceptorLogInfoInceptorTransmactionInterceptorTest总结
springmvc.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <bean id="adminCheck" class="cn.hp.impl.AdminCheck"></bean> <bean id="transmaction" class="cn.hp.impl.Transmaction"></bean> <bean id="bankDao" class="cn.hp.impl.BankDaoImpl"><!-- <property name="adminCheck" ref="adminCheck"></property>--><!-- <property name="transmaction" ref="transmaction"></property>--> </bean><!-- <aop:config>--><!--<!– 切入点,什么时候,执行什么切入进来–>--><!-- <aop:pointcut id="savepoint" expression="execution(* cn.hp.impl.*.*(..))"/>--><!--<!– 切面-用来做事情-执行业务逻辑之前-你要做或执行什么事情–>--><!-- <aop:aspect id="adminincepter" ref="adminCheck">--><!-- <aop:before method="check" pointcut-ref="savepoint"></aop:before>--><!-- </aop:aspect>--><!-- --><!-- <aop:aspect id="transmactionincepter" ref="transmaction">--><!-- <aop:around method="dointcepter" pointcut-ref="savepoint"></aop:around>--><!-- </aop:aspect>--><!-- </aop:config>--> <bean id="logInfo" class="cn.hp.impl.LogInfo"></bean> <bean id="adminCheckInterceptor" class="cn.hp.interceptor.AdminCheckInterceptor"> <property name="adminCheck" ref="adminCheck"></property> </bean> <bean id="logInfoInceptor" class="cn.hp.interceptor.LogInfoInceptor"> <property name="logInfo" ref="logInfo"></property> </bean> <bean id="transmactionInterceptor" class="cn.hp.interceptor.TransmactionInterceptor"> <property name="transmaction" ref="transmaction"></property> </bean><!-- 注入代理类--> <bean id="proxyFactory" class="org.springframework.aop.framework.ProxyFactoryBean"><!--代理对象是谁--> <property name="target" ref="bankDao"></property><!-- 代理的接口--> <property name="proxyInterfaces" value="cn.hp.dao.BankDao"></property><!-- 代理的通知组件--> <property name="interceptorNames"> <list> <value>adminCheckInterceptor</value> <value>logInfoInceptor</value> <value>transmactionInterceptor</value> </list> </property> </bean></beans>
BankDao
package cn.hp.dao;public interface BankDao { /** * 存钱 */ public void remit(); /** * 取钱 */ public void withdrawMoney(); /** * 转账 */ public void transferAccounts();}
AdminCheck
package cn.hp.impl;public class AdminCheck { public void check(){ System.out.println("正在验证账号信息"); }}
BankDaoImpl
package cn.hp.impl;import cn.hp.dao.BankDao;public class BankDaoImpl implements BankDao { @Override public void remit() {// adminCheck.check();// transmaction.beginTransmaction(); System.out.println("存钱的业务逻辑");// transmaction.closeTransmaction(); } @Override public void withdrawMoney() {// adminCheck.check();// transmaction.beginTransmaction(); System.out.println("取钱的业务逻辑");// transmaction.closeTransmaction(); } @Override public void transferAccounts() { System.out.println("转账的业务逻辑"); }}
LogInfo
package cn.hp.impl;public class LogInfo { public void write(){ System.out.println("写日志中"); }}
Transmaction
package cn.hp.impl;import org.aspectj.lang.ProceedingJoinPoint;public class Transmaction { public void beginTransmaction(){ System.out.println("开始事务"); } public void closeTransmaction(){ System.out.println("结束事务"); } public void dointcepter(ProceedingJoinPoint point) throws Throwable { beginTransmaction(); point.proceed(); closeTransmaction(); }}
AdminCheckInterceptor
package cn.hp.interceptor;import cn.hp.impl.AdminCheck;import org.springframework.aop.MethodBeforeAdvice;import java.lang.reflect.Method;import java.util.Set;public class AdminCheckInterceptor implements MethodBeforeAdvice { private AdminCheck adminCheck; public AdminCheck getAdminCheck() { return adminCheck; } public void setAdminCheck(AdminCheck adminCheck) { this.adminCheck = adminCheck; } @Override public void before(Method method, Object[] objects, Object o) throws Throwable { adminCheck.check(); }}
LogInfoInceptor
package cn.hp.interceptor;import cn.hp.impl.LogInfo;import org.springframework.aop.AfterReturningAdvice;import java.lang.reflect.Method;public class LogInfoInceptor implements AfterReturningAdvice { private LogInfo logInfo; public LogInfo getLogInfo() { return logInfo; } public void setLogInfo(LogInfo logInfo) { this.logInfo = logInfo; } @Override public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable { logInfo.write(); }}
TransmactionInterceptor
package cn.hp.interceptor;import cn.hp.impl.Transmaction;import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.MethodInvocation;import org.apache.ibatis.transaction.Transaction;public class TransmactionInterceptor implements MethodInterceptor { private Transmaction transmaction; public Transmaction getTransmaction() { return transmaction; } public void setTransmaction(Transmaction transmaction) { this.transmaction = transmaction; } @Override public Object invoke(MethodInvocation invocation) throws Throwable { transmaction.beginTransmaction(); Object obj = invocation.proceed(); transmaction.closeTransmaction(); return obj; }}
Test
package cn.hp.test;import cn.hp.dao.BankDao;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test { public static void main(String[] args) { //test1();// test2(); test3(); } private static void test3() { ApplicationContext ac= new ClassPathXmlApplicationContext("springmvc.xml"); BankDao proxyFactory = ac.getBean("proxyFactory", BankDao.class); proxyFactory.remit(); } private static void test2() { ApplicationContext ac = new ClassPathXmlApplicationContext("springmvc.xml"); BankDao bd = ac.getBean("bankDao",BankDao.class); bd.transferAccounts(); } private static void test1() { ApplicationContext ac = new ClassPathXmlApplicationContext("springmvc.xml"); BankDao bd = ac.getBean("bankDao",BankDao.class); bd.withdrawMoney(); }}
总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注的更多内容!
因害怕失败而不敢放手一搏,永远不会成功