使用Spring自动生成代理类,spring利用的是动态代理机制
接口
Java代码
public interface UserDao {
void addUser();
void deleteUser();
}
public interface UserDao {
void addUser();
void deleteUser();
}
两个实现:
Java代码
public class UserDaoMySqlImpl implements UserDao {
@Override
public void addUser() {
System.out.println("UserDaoMySqlImpl.addUser()");
}
@Override
public void deleteUser() {
System.out.println("UserDaoMySqlImpl.deleteUser()");
}
}
public class UserDaoOracleImpl implements UserDao {
@Override
public void addUser() {
System.out.println("UserDaoOracleImpl.addUser()");
}
@Override
public void deleteUser() {
System.out.println("UserDaoOracleImpl.deleteUser()");
}
}
Device
import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;
public class UserDaoBeforeAdvice implements AfterReturningAdvice {
@Override
public void afterReturning(Object arg0, Method arg1, Object[] arg2,
Object arg3) throws Throwable {
System.out.println("UserDaoBeforeAdvice.afterReturning()");
}
}
public class UserDaoMySqlImpl implements UserDao {
@Override
public void addUser() {
System.out.println("UserDaoMySqlImpl.addUser()");
}
@Override
public void deleteUser() {
System.out.println("UserDaoMySqlImpl.deleteUser()");
}
}
public class UserDaoOracleImpl implements UserDao {
@Override
public void addUser() {
System.out.println("UserDaoOracleImpl.addUser()");
}
@Override
public void deleteUser() {
System.out.println("UserDaoOracleImpl.deleteUser()");
}
}
Device
import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;
public class UserDaoBeforeAdvice implements AfterReturningAdvice {
@Override
public void afterReturning(Object arg0, Method arg1, Object[] arg2,
Object arg3) throws Throwable {
System.out.println("UserDaoBeforeAdvice.afterReturning()");
}
}
配置文件
Xml代码
<!-- 配置实现类的bean,可以把所有的实现类都写上 -->
<bean id="userdao" class="com.dowebber.spring.aop_after.UserDaoMySqlImpl"></bean>
<!--配置Advice的bean -->
<bean id="beforeadvice" class="com.dowebber.spring.aop_after.UserDaoBeforeAdvice"></bean>
<!--配置spring自动生成代理对象所需要的一些参数 -->
<bean id="userdaoproxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces" value="com.dowebber.spring.aop_after.UserDao"/>
<property name="target">
<ref bean="userdao"/>
</property>
<property name="interceptorNames">
<list>
<value>beforeadvice</value>
</list>
</property>
</bean>
<!-- 配置实现类的bean,可以把所有的实现类都写上 -->
<bean id="userdao" class="com.dowebber.spring.aop_after.UserDaoMySqlImpl"></bean>
<!--配置Advice的bean -->
<bean id="beforeadvice" class="com.dowebber.spring.aop_after.UserDaoBeforeAdvice"></bean>
<!--配置spring自动生成代理对象所需要的一些参数 -->
<bean id="userdaoproxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces" value="com.dowebber.spring.aop_after.UserDao"/>
<property name="target">
<ref bean="userdao"/>
</property>
<property name="interceptorNames">
<list>
<value>beforeadvice</value>
</list>
</property>
</bean>
测试类
Java代码
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestUserDaoAfterDevice {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("com/dowebber/spring/aop_after/spring.xml");
UserDao dao = (UserDao)context.getBean("userdaoproxy");
dao.addUser();
}
}
分享到:
相关推荐
本文实例讲述了PHP简单实现解析xml为数组...xml version=1.0 encoding=UTF-8?> <main xss=removed versionCode=1.0> <controller co=Aritles> <meth title=测试插件 do=aritle/> </controller> <controller co=Ari>
有关XML的习题,主要有填空,选择,判断和编程题,包含了XML的大部分知识。每一题都有详细的答案。
xml version="1.0" encoding="gbk"?> <dataRoot> <record> <a1>6</a1> <b2>7</b2> <c3>8</c3> <d4>9</d4> <f5>10</f5> </record> <record> <a1>11</a1> <b2>12</b2> <c3>13</c3> <d4>14</d4> <f5>15</f5> </record> ...
xml version=/'1.0/' encoding=/'gbk/'?> <dataRoot> <record> <name score age >name score age </name score age > </record> <record> <name score age >d1 61 6 </name score age > </record> <record> <name ...
xml version=/'1.0/' encoding=/'gbk/'?> <dataRoot> <record> <name score age >name score age </name score age > </record> <record> <name score age >d1 61 6 </name score age > </record> <record> <name ...
xml version="1.0" encoding="gbk" ?> <root> <Group gid="1" name="组1" remark="组1备注"> <item id="1" name="版本号" remark="02">987</item> <item id="2" name="代号C" remark="实际">666</item> </...
xml version="1.0" encoding="GBK"?> <Database DbUrl="jdbc:mysql://127.0.0.1:3306/" DriverName=...
xml version="1.0" encoding="GBK"?> <!DOCTYPE 联系人列表[ <!ENTITY content "某公司部分联系人信息"> <!ELEMENT 联系人列表 (说明,联系人)> <!ELEMENT 联系人 (姓名,ID,公司,电话,地址)> <!ELEMENT 姓名 ...
xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> ...
xml version="1.0" encoding="GBK"?> <a> <b> <c type="0" centerx="1" centery="2" dispname="3" linestr=""> <d name="OBJECTID" value="100" /> <d name="NAME" value="aaa" /> </c> <c type="1" ...
<br><br>/**<br><br>* @author Holen Chen<br><br>*/<br><br>public class Dom4jDemo {<br> public Dom4jDemo() {<br> }<br><br> /**<br><br> * 建立一个XML文档,文档名由输入属性决定<br><br> * @param filename 需...
xml version="1.0" encoding="GBK" standalone="no"?> <B2CReq> <aaaaaa>bbbbbb</aaaaaa> <ccccccc name="张三" id="110"> <sub2>fdsdfsdfs</sub2> </ccccccc> <dddddd>333333333</dddddd> </B2CReq>
xml version=”1.0″ encoding=”GBK”?> <select> <province id=”sx”> 陕西 <city id=”xa”>西安</city> <city id=”bj”>宝鸡</city> <city id=”ak”>安康</city> </province> <province id=”js”> ...
当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错...xml version=1.0 encoding=GBK?> <queryForm token=
本文实例讲述了PHP4和PHP5版本下解析XML文档的操作方法。分享给大家供大家参考,具体如下...xml version=1.0 encoding=gbk?> <LeapsoulXML> <LeapsoulInfo> <name>Leapsoul-PHP网站开发</name> <website>https://ww
xml version="1.0" encoding="UTF-8"?> 2 3 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation=...
xml version="1.0" encoding="gbk"?> <root> <head> <actdate>20170805</actdate> <trdate>20170805</trdate> <trtime>142410</trtime> <trseq>20170807001</trseq> <succflag>1</succflag> <ret...
xml version=1.0 encoding=GBK?> <!-- 指定Spring配置文件的根元素和Schema 导入p:命名空间和util:命名空间的元素 --> <beans xmlns=http://www.springframework.org/schema/beans xmlns:xsi=...
xml version="1.0" encoding="GBK" ?> <project name="demo" default="usage" xmlns:catalina="antlib:org.apache.catalina.ant"> <!--属性配置- ... by mshijie 2009-07-30 回复 (0) [转]使用Ant进行项目构建之二 ....
xml version="1.0" encoding="GB2312"?> <myfile> <title>XML轻松学习手册</title> <author>ajie</author> <Email>ajie@aolhoo.com</email> <date>20010115</date> </myfile> 七. 关于XML的更多 好了,到...