- 浏览: 325943 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
di1984HIT:
谢谢,写的不错。
使用hector操作Cassandra -
mr_von:
非常感谢!
paoding的分词使用 -
howgoo:
http://www.dhtmlx.com/docs/prod ...
dhtmlxGrid分页与排序 -
青春的、脚步:
谢谢
spring-data-mongodb的MongoTemplate 使用小例子 -
青春的、脚步:
xiaofancn 写道青春的、脚步 写道这个能查询都个值在某 ...
spring-data-mongodb的MongoTemplate 使用小例子
这是我要实现的效果
public static void main(String[] args) { UserDao proxy = (UserDao) BeanProxyFactory.getProxyObject(UserDaoImpl.class.getName()); proxy.save(new User());//我想实现保存的时候,自动调用一些动作 }
看代码
package org.dao; import org.pojo.User; public interface UserDao { public void save(User user); public void update(User user); }
package org.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(value = RetentionPolicy.RUNTIME) public @interface Transaction { }
package org.dao.impl; import org.annotation.Transaction; import org.dao.UserDao; import org.pojo.User; @Transaction public class UserDaoImpl implements UserDao { public void save(User user) { System.out.println("save user!" + user.getUserId()); } public void update(User user) { System.out.println("save user!" + user.getUserId()); } }
package org.aop; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.util.HashSet; import java.util.Set; import org.annotation.Transaction; public class MethodInvocationHandler implements InvocationHandler { private Object originalObject; private Set<String> transactionMethod = new HashSet<String>(); @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = null; if (transactionMethod.contains(method.getName())) { System.out.println("事务开启"); result = method.invoke(originalObject, args); System.out.println("事务结束"); } else { result = method.invoke(originalObject, args); } return result; } public MethodInvocationHandler(Object originalObject) { this.originalObject = originalObject; for (Method m : originalObject.getClass().getMethods()) { if (m.isAnnotationPresent(Transaction.class) || originalObject.getClass().isAnnotationPresent( Transaction.class)) { this.transactionMethod.add(m.getName()); } } } }
package org.aop; import java.lang.reflect.Proxy; import org.dao.UserDao; import org.dao.impl.UserDaoImpl; import org.pojo.User; public class BeanProxyFactory { public static Object getProxyObject(String className) { Object proxyObject = null; try { Class claszz = Class.forName(className); MethodInvocationHandler handler = new MethodInvocationHandler( claszz.newInstance()); proxyObject = Proxy.newProxyInstance(claszz.getClassLoader(), claszz.getInterfaces(), handler); } catch (Exception e) { } return proxyObject; } public static void main(String[] args) { UserDao proxy = (UserDao) BeanProxyFactory .getProxyObject(UserDaoImpl.class.getName()); proxy.save(new User());// 我想实现保存的时候,自动调用一些动作 } }
发表评论
-
spring cloud gateway 全局过滤器。
2019-03-17 23:11 492spring cloud gateway 网关 ... -
elasticsearch 5.4搜索
2017-05-19 08:37 148@Test public void t ... -
netty简单的操作memcached
2017-04-19 18:59 941pom文件 <dependency> ... -
juc系列-Executor框架
2017-03-20 13:34 662转自 juc系列-Executor框架 什 ... -
ReentrantLock 类
2017-03-19 21:11 11.1 什么是reentrantlock java.u ... -
juc之CountDownLatch、CyclicBarrier和Semaphore例子
2017-03-19 17:23 790import java.util.concurren ... -
netty客户端与服务端例子
2017-03-12 20:07 2766package com.snailteam.nett ... -
freemaker集成spring
2017-02-26 19:00 531<bean id="freeMark ... -
spring集成Hessian插件配置改成自动注入。
2017-02-10 15:39 798原来的配置 <bean name="/ ... -
web开发模版
2017-02-09 14:42 0# Rules reminder: # DEBUG &l ... -
Java多线程
2017-02-04 14:39 487线程状态图 新建状态(New): ... -
hash冲突解决
2017-01-23 18:30 4241、开放地址法有一个公式: m是hash表长度,di ... -
mybatis +spring 分库
2015-04-30 17:56 353<context:component-scan b ... -
Java并发任务处理例子
2014-02-12 16:06 1099public void init() { su ... -
paoding的分词使用
2012-06-13 21:30 4838paoding下载 http://code.googl ... -
使用spring-hadoop操作hadoop
2012-05-20 02:12 32参考文章 http://blog.springsource. ... -
solr3.5集成paoding和位置搜索及对solrj的使用。
2012-04-28 02:12 1920http://xiaofancn.iteye.com/blog ... -
日期处理DateUtils
2012-03-24 09:47 4750import java.text.SimpleDateF ... -
Cassandra的数据分布情况测试
2012-03-16 15:09 19951、规划种子节点ip和Token值的对应 4个种子 ... -
使用hector操作Cassandra
2012-03-13 18:06 3498http://rantav.github.com/hec ...
相关推荐
JAVA动态代理模式.pdf
动态代理模式 适配器模式 实现,都可以运行,有一部分注解
自己总结的代理模式和Java中的动态代理模式,有源码
适用于初探java动态代理模式,精简易懂。
对代理模式与Java动态代理类的理解说明
java中的装饰模式及动态代理模式示例源码,并且手写数据库连接池,以及展示动态代理模式在连接池中的使用
Java设计模式——代理设计模式(静态代理和动态代理) 各种情况例子源码
1:静态代理出现的实际背景,静态代理时如何演化成动态代理 2: 动态代理demo 举例实际应用场景(载入数据库驱动的时候,使用AIDL与系统Servic进行通信) 3: 动态代理使用到基础理论:ClassLoader 加载.class字节码...
主要介绍了Java动态代理模式简单案例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理)
用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明
- 代理模式 - 静态代理与动态代理 - 常见的动态代理实现 - JDK Proxy - CGLIB - JDK Proxy 和 CGLIB 的对比 - 动态代理的实际应用 - Spring AOP 说在前面:今天我们来聊一聊 Java 中的代理,先来聊聊故事...
Java 代理模式: 详见:http://blog.csdn.net/q610098308/article/details/74144046
详细而又简单的讲述了java动态代理设计模式
JAVA设计模式之代理模式实例
Java 动态代理 借用电子商务模式来说明
带视频讲解的代理模式之动态代理,有源代码和课件,很有帮助
Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)