AOPXML实现
来源:互联网 发布:淘宝客推广方式大全 编辑:程序博客网 时间:2024/05/16 06:14
主要在于配置可以对照JDK实现(主要代理实现需要的参数)记忆
包
spring
log4j-1.2.11.jar
commons-logging-1.0.4.jar
配置
属性文件
log4j.properties
#rootlogger
log4j.rootLogger=INFO,A1
#1.ConsoleAppender
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p[%t] %-17c{2}(%13F:%L) %3x-%n%m%n
AOP.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="logbeforeAdvice" class="aopxml.LogbeforeAdvice"/> //定义一个bean 向代理序言的Handler
<bean id="logafterAdvice" class="aopxml.LogAfterAdvice"/>
<bean id="hello" class="aopxml.Hello"/> //代理中必须需要一个被代理类的实例
<bean id="helloProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces"> //代理中需要interface参数
<value>aopxml.IHello</value>
</property>
<property name="target"> //Handler需要被代理类的实例
<ref bean="hello"/>
</property>
<property name="interceptorNames"> //
<list>
<value>logbeforeAdvice</value>
<value>logafterAdvice</value>
</list>
</property>
</bean>
</beans>
1.接口Hello
public interface IHello {
void sayHello(String name);
}
2.类Hello
public class Hello implements IHello{
public void sayHello(String name) {
System.out.println("Hello " + name);
}
public void doPrintln(String str){
System.out.println("========method doprint is work! =========");
System.out.println("+++++++" + str);
}
}
3.后置实现 LogAfterAdvice
import java.lang.reflect.Method;
import org.apache.log4j.Logger;
import org.springframework.aop.AfterReturningAdvice;
public class LogAfterAdvice implements AfterReturningAdvice {
Logger log = Logger.getLogger(this.getClass().getName());
public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3)
throws Throwable {
log.info("======= after method =========");
}
}
4.前置实现
import java.lang.reflect.Method;
import org.apache.log4j.Logger;
import org.springframework.aop.MethodBeforeAdvice;
public class LogbeforeAdvice implements MethodBeforeAdvice {
Logger log = Logger.getLogger(this.getClass().getName());
public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {
log.info("======== method start =========");
if (arg1.length > 0) {
for (int i = 0; i < arg1.length; i++) {
log.info("========paramer===" + arg1[i].toString() + " =======");
}
}
if (arg2 != null) {
log.info(arg2.toString());
for (java.lang.reflect.Method m : arg2.getClass().getMethods()) {
log.info("---- method name is:" + m.getName());
if (m.getName().indexOf("doPrintln") != -1) {
m.invoke(arg2, arg1);
}
}
}
}
}
5.Main
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class Main {
public static void main(String[] args) {
ClassPathResource s = new ClassPathResource("/AOP.xml");
BeanFactory f = new XmlBeanFactory(s);
IHello h = (IHello)f.getBean("helloProxy");
h.sayHello("Bill");
}
}
- AOPXML实现
- Aopxml方式的实现
- 实现
- 实现
- 红黑树实现 实现代码
- java实现排列组合实现
- 实现Runnable 实现线程
- 实现ViewPager多种实现
- 双向LSTM实现实现
- 实现缓存 java实现
- 三子棋的实现的实现的实现
- 四则运算实现
- 继承实现
- 重载实现
- 实现缩略图
- split实现
- 实现缩略图
- wmi实现
- Python 5 Module
- poj 1077 Eight
- c++中的私有构造函数
- AOPJDK实现
- 单线表格实现方法讨论
- AOPXML实现
- AOP概念
- 虚继承与虚函数继承
- finally小特性
- 关于在CAknMessageQueryDialog里显示中文的问题
- 两个小异常
- MySQL中字符串函数详细介绍
- 无向图双连通分量
- GridView动态生成模板列