`
垂直的微笑
  • 浏览: 45322 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CGLIB 实现拦截器

    博客分类:
  • JAVA
阅读更多
final NSConnectionFactory factory = (NSConnectionFactory) context.get(NSConst.DATASOURCEFACTORY_KEY);
        Object[] arguments = new Object[]{KDataAccess.ORACLE, factory.getConnection(jndi), getUser(), sessionId, NConst.CURRENT_SCHEMA};
        Class[] argumentTypes = new Class[arguments.length];
        argumentTypes[0] = Integer.class;
        argumentTypes[1] = Connection.class;
        argumentTypes[2] = User.class;
        argumentTypes[3] = String.class;
        argumentTypes[4] = String.class;
        Enhancer enhancer = new Enhancer();
    enhancer.setSuperclass(NDataAccess.class);
        enhancer.setCallback(new NDataAccessProxy(titleDspId,getUser()));
        NDataAccess proxy = (NDataAccess)enhancer.create(argumentTypes,arguments);
/**
* <pre>
* &lt;strong&gt;説明:&lt;/strong&gt;
* DBアクセスローグ出力するためにDB代理用クラス.
* </pre>
*
* <pre>
* &lt;strong&gt;注意事項:&lt;/strong&gt;
* </pre>
*
* <pre>
* &lt;strong&gt;使用例:&lt;/strong&gt;
* </pre>
*
* @author $Author: 鄧 $
* @version $Revision: 1.1 $ $Date: 2010/10/18 07:08:52 $
*/
public final class NDataAccessProxy implements MethodInterceptor {

private String functionId;
private User user;

public NDataAccessProxy(String functionId, User user) {
this.functionId = functionId;
this.user = user;
}

/** ログ. */
protected static Logger log = Logger.getLogger(NDataAccessProxy.class);

public Object intercept(Object obj, Method method, Object[] param,
MethodProxy proxyMethod) throws Throwable {
boolean isFunction = false;
boolean isSqlFunction = false;
LoginUser loginUser ;
String dealer = "";
if (functionId.equals("TS018")) {
isFunction = true;
Pattern pattern = Pattern.compile("^(getRecord(s|Bfile)(Exe)?|getResultSetEx|executeUpdate(SameState)?Exe|prepareCallExe(RetStr)?)$");
Matcher m = pattern.matcher(method.getName());
if(m.find()) {
isSqlFunction = true;
loginUser = (LoginUser) user;
dealer = loginUser.getDealerResourceType() + "_"
+ loginUser.getDealerConnectionCode() + "_"
+ loginUser.getDealerConnectionType();
}
}
if (isFunction) {
if(isSqlFunction) {
log.info("[DB]\t[functionId:]" + functionId + "\t[dealer:]" + dealer
+ "\t[sql:]" + param[param.length-1] + "\t[begin]");
}
}
Object result = proxyMethod.invokeSuper(obj, param);
if (isFunction) {
if(isSqlFunction) {
log.info("[DB]\t[functionId:]" + functionId + "\t[dealer:]" + dealer
+ "\t[sql:]" + param[param.length-1] + "\t[end]");
}
}
return result;
}
}
分享到:
评论

相关推荐

    使用CGLIB模拟spring的拦截器

    使用CGLIB编写的Spring的拦截器 非常使用的哦

    Jdk动态代理,cglib动态代理,反射和拦截器(链)示例

    该资源里面有Jdk动态代理,cglib动态代理,反射和拦截器(链)示例,里面也有所需要的jar包,下载下来导入eclipse即可运行,有问题请问我

    java设计模式【之】Cglib动态代理【源码】【场景:帮爸爸买菜】

    * 代理类需要实现 MethodInterceptor(方法拦截器) * * 1.创建被代理类、创建代理类、代理类内部聚合被代理类 * 2.创建返回代理类实例方法 Enhancer.create(object.getClass(), this); * (1.创建工具类,2....

    Spring-AOP-JDK动态代理

    Spring-AOP-利用java中的动态代理和Spring的拦截器做到AOP

    Spring开发指南

    XWork 拦截器体系 输入校验 国际化支持 Webwork2 in Spring Struts in Spring 数据持久层 事务管理 持久层封装 JDBC Hibernate in Spring ibatis in Spring Aspect Oriented Programming AOP 概念 ...

    Java.lang.Instrument 代理Agent使用

    java.lang.Instrument包是在 JDK5引入的,程序员通过修改方法的字节码实现动态修改类代码 。...  (1) 代理 (agent) 是在你的main方法前的一个拦截器 (interceptor),也是在main方法执行之前,执行agent的代码。 a

    spring mvc的xml文件的相关的配置参考.txt

    Spring mvc 配置: WEB/INF/springmvc-servlet.xml//编码过滤器//静态资源忽略//AOP代理方式设定//拦截器配置//cglib动态代理

    MyEclipse 6 Java 开发中文教程第十章

    201 &lt;br&gt;10.3.2 开发前置通知(Before advice)对象:FBI 201 &lt;br&gt;10.3.3 装配拦截器和Bean. 202 &lt;br&gt;10.3.4 测试和运行... 203 &lt;br&gt;10.3.5 AOP简介和相关概念... 204 &lt;br&gt;10.4 开发 Spring 2.0 AOP...

    spring5系列 任小龙大神班

    该课程是最新的Spring5版本包含:STS工具、IoC、DI思想、Spring测试框架、bean的实例化、作用域、初始化、生命周期、静态代理、字节码加载原理、JDK动态代理和原理、CGLIB动态代理和原理、拦截器思想、AOP思想和开发...

    Spring3+Hibernate4+Struts2 jar包 SSH框架

    spring 3.2.0+hibernate 4.1.6+struts2整合需要的jar包 的目录 ...文件上传,拦截器,操作的数据库是Mysql, 如果操作的数据库是oracle或者是其他, 将mysql-connector-java-5.1.20-bin.jar 改为相应的驱动包即可。

    proxytoys:有用的Java代理工具集合

    特征API兼容的代理工厂提供者: JDK的标准代理CGLIB实施ProxyToys提供了充当工厂的玩具集合,用于创建“特殊”代理,例如: 装饰器-用于简单的类似于AOP的链接方法拦截委托-对于可能具有不同类型的委托对象上的方法...

    《MyEclipse 6 Java 开发中文教程》前10章

    10.3.3 装配拦截器和Bean 212 10.3.4 测试和运行 214 10.3.5 AOP简介和相关概念 214 10.3.6 关于java.lang.ClassCastException: $Proxy0错误的解决方法 216 10.4 开发 Spring 2.0 AOP 应用 219 10.4.1 使用aop 标签...

    Spring + Hibernate + Struts 事务配置小例子(带提示框等小技巧)

    -- 下面定义BeanNameAutoProxyCreator所需的事务拦截器--&gt; &lt;value&gt;transactionInterceptor &lt;!-- 此处可增加其他新的Interceptor --&gt; &lt;!--定义DAO Bean ,由于BeanNameAutoProxyCreator自动...

    Spring中文帮助文档

    13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器(ViewResolver) 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. ...

    Spring API

    13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器(ViewResolver) 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. ...

    Spring 2.0 开发参考手册

    13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2....

    spring chm文档

    13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2....

    Spring-Reference_zh_CN(Spring中文参考手册)

    13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.5.3.1. RedirectView 13.5.3.2. redirect:前缀 13.5.3.3. forward:...

Global site tag (gtag.js) - Google Analytics