本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订 。
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 }
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 }
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的一些说明
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和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.
- 绑定数据
- 其他一些操作,如增删改
- 外观时髦,功能齐全
- JS控件,用来显示和操作表格数据
- 使用AJAX方式
- 可以被集成到任何服务器端技术,例如ASP, JavaServelets, JSP, PHP 等等.
- 由Trirand公司Tony Tomov开发.
- 和ASP.NET集成非常简单
- 下载JqGrid,添加所需的文件到ASP.NET应用程序 (主要是一些Scripts and CSS).
- 在需要使用的页面中初始化JqGrid.
- 绑定数据
- 其他一些操作,如增删改
没有评论:
发表评论