Spring自动代理
来源:互联网 发布:天威网络客服电话 编辑:程序博客网 时间:2024/05/18 02:38
Aop拦截的类必须统一实现一个接口,interrupt方法又是Thread自带的,项目中线程没有统一定义接口,所以失败但还是测试了一下Spring的自动代理,感觉还是挺好用的,在这个新技术新框架层出的年代,自己真的有点过时了,前一段时间听说Spring的创始人已经投奔微软了,我想对java还是会有一定影响的。
下面是测试代码,很简单自己记录一下,以备后用。
//业务类
package com.xujj.spring;
/**
* IHelloWorld接口
*
* @author xujj
*/
public interface IHelloWorld {
public abstract String test(String a);
}
package com.xujj.spring;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* IHelloWorld接口实现
*
* @author xujj
*/
public class HelloWorld implements IHelloWorld {
private static final Log log = LogFactory.getLog(HelloWorld.class);
public String test(String a) {
log.info(a);
return a;
}
}
//通知,拦截方法
/**
*
*/
package com.xujj.spring;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
/**
* @author xujj
*
*/
public class TestAdvice implements MethodInterceptor {
public Object invoke(MethodInvocation arg0) throws Throwable {
System.out.println("~~~~~~~~~~~~~~~~before~~~~~~~~~~~~");
String value = String.valueOf(arg0.getArguments()[0]);
if (value.startsWith("hello"))
arg0.proceed();
System.out.println("~~~~~~~~~~~~~~~after~~~~~~~");
return null;
}
}
//客户端:
package com.xujj.spring;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* HelloWorld客户应用
*
* @author xujj
*/
public class HelloClient {
protected static final Log log = LogFactory.getLog(HelloClient.class);
public static void main(String[] args) {
ApplicationContext ctx=new FileSystemXmlApplicationContext("src/appcontext.xml");
IHelloWorld hw = (IHelloWorld) ctx.getBean("hello");
//通过代理获取实例,只能转换成接口类型,不能转换成具体类
hw.test("ahello world!!");
}
}
//配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="advisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref bean="TestAdvice" />
</property>
<property name="pattern">
<value>.*test.*</value>
</property>
</bean>
<bean id="TestAdvice" class="com.xujj.spring.TestAdvice"></bean>
<bean id="autoProxyCreator"
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" />
<bean id="hello" class="com.xujj.spring.HelloWorld" />
</beans>
上一篇:CORBA入门
下一篇:关联 聚合
- 上海黄浦区律师 即进行意思表...
- Unity中的关节
- 回收、收购!AGILENTN5181A N5...
- 机不可失-SA2500A SA2500EX S...
- 广州企业网站+手机网站建站能...
- JDK1.6官方下载_JDK6官方下载_...
- MyEclipse6.5下载及注册码...
- Eclipse 插件安装、升级和卸载...
- Eclipse+MyEclipse的配置
- 最新版SWT Designer 6.0 安装,...
- 如何学习linux内核
- Linux分区扩容问题
- linux系统机器,锁屏后,重新...
- oracle vm 宕机不能自动漂移,...
- 如何读取一个持续输出内容程序...
- spring自动代理
- spring 自动代理分析
- Spring自动代理
- spring 之自动代理
- Spring中的自动代理
- Spring 顾问 自动代理
- Spring 顾问 自动代理
- Spring 顾问 自动代理
- Spring 顾问 自动代理
- Spring自动代理
- Spring 顾问 自动代理
- Spring的自动代理
- Spring自动代理
- spring自动代理
- spring自动代理
- spring自动代理
- 5.10 Spring中的自动代理
- Spring之自动创建代理
- Ibatis SqlMapConfig.xml加载SQL文件
- 去掉^M 符号
- linux终端--rxvt
- 为什么Java的foreach比for慢??
- CORBA入门
- Spring自动代理
- 关联 聚合
- Ubuntu 安装ssh1
- 动态设置CLASSPATH
- Spring标签
- OAUTH
- eclipse支持提示
- Ubuntu 使用手记
- 使用 Visual Studio 2013 编译,调试 linux-0.11