java动态代理详解,并用动态代理和注解实现日志记录功能

本文介绍了Java动态代理的概念,探讨如何在运行时创建代理对象以实现日志记录功能,而不修改原有代码,遵循OCP原则。通过示例展示了如何使用动态代理结合注解`@LogInfo`,只对特定方法(如add、delete、update)记录日志,而忽略其他如load等方法,实现了灵活的日志控制。
摘要由CSDN通过智能技术生成

动态代理的概念

      动态代理是程序在运行过程中自动创建一个代理对象来代替被代理的对象去执行相应的操作,例如, 我们有一个已经投入运行的项目中有一个用户DAO类UserDao用来对User对象进行数据库的增删改查操作,但是有一天,要求在对用户的增删改查操作时记录相应的日志,这是怎么办呢?难道我们去直接修改UserDao的源代码,然后在UserDao的每个方法中加入日志记录功能,这显然是不合理的,它违背了java的OCP原则,即对修改关闭对扩张开放。比如改现有的代码如下:

接口类

public interface IUserDao {
	public void add(User user);

	public User load(int id);

	public void delete(int id);
	
	public void update(User user);

}

实现类

public class UserDao implements IUserDao {

	public void add(User user) {

		System.out.println("user added:" + user);
	}

	public User load(int id) {
		System.out.println("load user, id=" + id);
		return null;
	}

	public void delete(int id) {

		System.out.println("deleted user, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值