开发中我们会需要对某些方法做日志记录。
一种最简单的方法是,先创建一个Logger对象。
public class Logger {
public static void info(String info){
System.out.println(new Date()+"---> "+info);
}
}
任何需要做日志的方法,比如UserDao的add()方法,
public void add(User user) {
Logger.info("user:"+user.getUsername() +"is added");
this.getSession().save(user);
}
这样是可行的, 但是这样会加入大量的日志代码在我们的底层代码中。
Spring提供了AOP(Aspect Oriented Programming),也就是面向切面编程。
这个方法类似于动态代理,可以在运行期对代理的方法进行操作。
这里说一说怎么用Spring的AOP来添加日志。
首先创建一个UserProxyDao,实现IUserDao接口:
@Component("userProxyDao")
public class UserProxyDao implements IUserDao {
@Inject
private IUserDao userDao;
@Override
public void add(User user) {
Logger.info("添加了用户: "+user.getUsername());
userDao.add(user);
}
@Override
public void update(User user) {
Logger.info("更新了用户: "+user.getUsername());
userDao.update(user);
}
@Override
public void delete(int id) {
Logger.info("删除了用户: "+id);
userDao.delete(id);
}
此时在UserService中使用这个代理对象来进行dao操作。
@Service("userService")
public class UserService implements IUserService {
@Resource(name="userProxyDao")
private IUserDao userDao;
}
这样便完成了静态代理的日志添加。
分享到:
相关推荐
**Spring AOP 入门实例** 在Java编程中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它允许程序员定义“横切关注点”,如日志、事务管理、性能监控等,然后将这些关注点与核心业务逻辑...
例如在上面的例子中,`HelloLoggerProxy`就是`HelloImpl`的一个静态代理,它实现了`IHello`接口,并在调用`greeting`方法前后添加了日志记录。 动态代理则更灵活,它可以在运行时动态地生成代理对象,而无需预先...
【标题】:“(入门)什么是AOP?什么是代理模式?怎么设计日志拦截器?” 在编程领域,AOP(Aspect Oriented Programming,面向切面编程)是一种编程范式,它旨在提高代码的可重用性和模块化。AOP的核心思想是将...
### AOP概念与Spring AOP入门 #### 一、AOP概述 面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程思想和技术,它通过将横切关注点(Cross-cutting Concerns)从业务逻辑中分离出来,从而实现更好...
在本章节中,我们将深入探讨AOP(面向切面编程)这一重要的编程概念,并通过具体的示例代码来帮助初学者入门。AOP是现代软件开发中的一个重要技术,它旨在提高代码的可重用性和模块化,减少代码冗余,使得程序更加...
SpringAOP(面向切面编程)是Spring框架的重要组成部分,它允许开发者将横切关注点或行为(例如日志、事务管理等)从业务逻辑代码中分离出来,从而使得业务逻辑能够更加专注于核心功能。 AOP的相关术语包括: 1. ...
本篇文章主要讲解了 Spring 框架的第二天学习资料,涵盖了 FactoryBean、Spring 工厂配置文件的参数化、静态代理、AOP 开发等知识点。 一、FactoryBean FactoryBean 是 Spring 框架中的一种机制,用于创建复杂对象...
042-spring-aop-代理模式和静态代理.mp4 043-spring-aop-动态代理模式.mp4 044-spring-aop-面向切面编程思想.mp4 045-spring-aop-aop8个核心名词理解.mp4 046-spring-aop-aop思维以及aop框架和代理技术的关系....
042-spring-aop-代理模式和静态代理.mp4 043-spring-aop-动态代理模式.mp4 044-spring-aop-面向切面编程思想.mp4 045-spring-aop-aop8个核心名词理解.mp4 046-spring-aop-aop思维以及aop框架和代理技术的关系....
042-spring-aop-代理模式和静态代理.mp4 043-spring-aop-动态代理模式.mp4 044-spring-aop-面向切面编程思想.mp4 045-spring-aop-aop8个核心名词理解.mp4 046-spring-aop-aop思维以及aop框架和代理技术的关系....
042-spring-aop-代理模式和静态代理.mp4 043-spring-aop-动态代理模式.mp4 044-spring-aop-面向切面编程思想.mp4 045-spring-aop-aop8个核心名词理解.mp4 046-spring-aop-aop思维以及aop框架和代理技术的关系....
- **静态代理**: - 在编译时期就已经确定好的代理类,对于每一个需要代理的类都需要手动创建相应的代理类。 - 缺点在于当需要代理的类较多时,会产生大量的代理类,增加项目的复杂度。 - **动态代理**: - 在...
#### 三、AOP入门编程案例 1. **导入依赖**: - Spring Core依赖:`spring-context`。 - AOP依赖:`spring-aspects`。 2. **创建目标类**: - 定义业务逻辑接口(如UserService)。 - 实现该接口的具体类(如...
- **AOP(面向切面编程)**:Spring通过代理机制实现AOP,可以在不修改业务逻辑代码的情况下添加横切关注点。 - **事件发布机制**:Spring支持事件驱动编程模型,允许组件发布事件,并由事件监听器响应这些事件。 - ...
8. **AOP入门** - **CGLIB代理**:了解如何使用CGLIB库来生成动态代理,实现方法级别的拦截。 - **手动实现AOP**:学习如何编写AOP代理代码,包括静态和非静态工厂方法。 - **Spring AOP**:掌握如何在Spring中...
**1.1 Spring AOP实例入门** 面向切面编程允许开发者将横切关注点(如日志记录、安全性和事务管理等)从业务逻辑中分离出来。Spring AOP通过拦截技术实现了这一功能。 **1.2 AOP概念** AOP的主要概念包括: - **...
Spring AOP主要通过代理(Proxy)实现,支持两种类型的代理:JDK动态代理和CGLIB代理。 3. **AOP的术语** - **切面(Aspect)**:封装了横切关注点的模块。 - **连接点(Joinpoint)**:程序执行过程中的某个...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...