2013年9月23日星期一

java使用动态代理来实现AOP(日志记录) - 天天_byconan

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
java使用动态代理来实现AOP(日志记录) - 天天_byconan  阅读原文»

以下内容为原创,转载时请注明链接地址:http://www.cnblogs.com/tiantianbyconan/p/3336627.html

AOP(面向方面)的思想,就是把项目共同的那部分功能分离开来,比如日志记录,避免在业务逻辑里面夹杂着跟业务逻辑无关的代码。

下面是一个AOP实现的简单例子:

首先定义一些业务方法:

1 /**
2 * Created with IntelliJ IDEA.
3 * Author: wangjie email:tiantian.china.2@gmail.com
4 * Date: 13-9-23
5 * Time: 下午3:49
6 */
7 public interface BussinessService {
8 public String login(String username, String password);
9 public String find();
10 }
11
12 public class BussinessServiceImpl implements BussinessService {
13 private Logger logger = Logger.getLogger(this.getClass().getSimpleName());
14
15 @Override
16 public String login(String username, String password) {
17 return "login success";
18 }
19
20 @Override
21 public String find() {
22 return "find success";
23 }
24
25 }
1 /**
2 * Created with IntelliJ IDEA.
3 * Author: wangjie email:tiantian.china.2@gmail.com
4 * Date: 13-9-24
5 * Time: 上午10:27
6 */
7 public interface WorkService {
8 public String work();
9 public String sleep();
10 }
11
12 public class WorkServiceImpl implements WorkService{
13 @Override
14 public String work() {
15 return "work success";
16 }
17
18 @Override
19 public String sleep() {
20 return "sleep success";
21 }
22 }

实现InvocationHandler接口,使用map来存储不同的InvocationHandler对象,避免生成过多。

1 /**
2 * Created with IntelliJ IDEA.
3 * Author: wangjie email:tiantian.china.2@gmail.com
4 * Date: 13-9-23
5 * Time: 下午3:47
6 */
7 public class LogInvoHandler implements InvocationHandler{
8 private Logger logger = Logger.getLogger(this.getClass().getSimpleName());
9
10 private Object target; // 代理目标
11 private Object proxy; // 代理对象
12
13 private static HashMap<Class<?>, LogInvoHandler> invoHandlers = new HashMap<Class<?>, LogInvoHandler>();
14
15 private LogInvoHandler() {
16 }
17
18 /**
19 * 通过Class来生成动态代理对象Proxy
20 * @param clazz
21 * @return
22 */
23 public synchronized static Object getProxyInstance(Class<?> clazz){
24 LogInvoHandler invoHandler = invoHandlers.get(clazz);
25
26 if(null == invoHandler){
27 invoHandler = new LogInvoHandler();
ASP.NET中使用JqGrid完整实现 - Miro  阅读原文»

文章提纲

  • 介绍 & 使用场景
  • JqGrid的一些说明
  • JqGrid和ASP.NET整合详细步骤

  前置准备

  框架搭建

  数据填充

  数据增/删/改

  其他

介绍&使用场景

JqGrid不是一个新鲜玩意,已经是一个久经证明的开源数据显示控件了。

园子里也有一些介绍文章,为什么还要写这篇文章呢?

因为还找不到可以完整讲述JqGrid集成的文章,我指的是从头至尾的完整的讲述,而不是其中一些片段或介绍一些参数。

正好在看到一篇文章完整的讲述了这个步骤: http://www.codeproject.com/Articles/609442/Using-JqGrid-in-ASP-NET

本文主要参考了这篇文章,讲述jqGrid和ASP.NET集成。

使用场景:

数据多且杂时,如果想要给表格数据的显示增加方便的查询/删选功能。

JqGrid免费,开源,使用方便,是一个不错的选择。

JqGrid的一些说明

  • 外观时髦,功能齐全
  • JS控件,用来显示和操作表格数据
  • 使用AJAX方式
  • 可以被集成到任何服务器端技术,例如ASP, JavaServelets, JSP, PHP 等等.
  • 由Trirand公司Tony Tomov开发.
  • 和ASP.NET集成非常简单

JqGrid和ASP.NET整合详细步骤

  • 下载JqGrid,添加所需的文件到ASP.NET应用程序 (主要是一些Scripts and CSS).
  • 在需要使用的页面中初始化JqGrid.
  • 绑定数据
  • 其他一些操作,如增删改

没有评论:

发表评论