- 浏览: 237197 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
qwe2252099:
给力!简单易懂
两个java web服务间SoapMessage对象的传递 -
mimang2007110:
不是自带的,自己编辑过的
java代码模板 -
墨子宇:
貌似不是带有箭头的
CSS带箭头的导航菜单 -
墨子宇:
借鉴一下。不是自带的那个吧
java代码模板 -
墨子宇:
看名字应该是注释模板吧
myeclipse编码模板
Spring 带给我们的另一个好处就是让我们可以“专心做事”,下面我们来看下面一个例子:
01 |
<b> public void doSameSomesing( int age,String name){
|
02 |
// 记录日志
|
03 |
log.info( " 调用 doSameSomesing 方法,参数是: " +agfe+” ”+name);
|
04 |
// 输入合法性验证
|
05 |
if (age<= 0 ){
|
06 |
throws new IllegalArgumentException( "age 应该大于 0" );
|
07 |
}
|
08 |
if (name== null || name.trim().equals( "" )){
|
09 |
throws new IllegalArgumentException( "name 不能为空 " );
|
10 |
}
|
11 |
// 异常处理
|
12 |
try { ...
|
13 |
service.save(age,name); // 业务处理存数据
|
14 |
} catch (...){
|
15 |
} catch (...){
|
16 |
}
|
17 |
// 事务控制
|
18 |
tx.commit();
|
19 |
}</b> |
大家想一下我们构建系统的主要目的是业务处理,但是我们在完成上面业务前需要解决如日志记录,参数验证等如此多方面的事情,这样的话留给我们考虑业务的时间就少了,使我们的业务代码质量得不到很好的保证,而这些方面又是不可缺少的我们不能不管,那么怎么办呢,我们能不能集中对这些方面进行一个统一的管理 ,当然可以,这就是 spring aop 要解决的问题。下面我们来看一个简单的例子,通过 spring aop 来集中解决日志方面的事情。
下面我们按照下面几个步骤去做:
1、 定义并实现对日志方面的处理。
01 |
<b> package com.springaop.aop;
|
02 |
import java.lang.reflect.Method;
|
03 |
import java.util.Arrays;
|
04 |
import java.util.Date;
|
05 |
import org.springframework.aop.MethodBeforeAdvice;
|
06 |
public class LogAdvice implements MethodBeforeAdvice{
|
07 |
public void before(Method method, Object[] args, Object o)
|
08 |
throws Throwable {
|
09 |
System. out .println( " 系统日志: " +( new Date())+ ":" + " 调用了 " +method.getName()+ " : 使用了参数 " +(Arrays.toString (args)));
|
10 |
|
11 |
}
|
12 |
}</b> |
( 注意这里我们要实现 MethodBeforeAdvice 接口 指的是在方法执行前织入执行,类似还有 AfterReturningAdvice )
2、 定义业务代码
2.1 业务接口
01 |
package com.springaop.service;
|
02 |
public interface IAopMethod {
|
03 |
public void doSomesing(String name);
|
04 |
} |
05 |
2.2 业务实现类
|
06 |
package com.springaop.service.impl;
|
07 |
import com.springaop.service.IAopMethod;
|
08 |
public class AopMethodimpl implements IAopMethod {
|
09 |
public void doSomesing(String name) {
|
10 |
System. out .println( "name:" +name);
|
11 |
|
12 |
}
|
13 |
} |
3. 配置 applicationContext.xml.
01 |
<!-- 处理日志方面的 bean--> |
02 |
< bean name = "mylogadvice" class = "com.springaop.aop.LogAdvice" ></ bean >
|
03 |
<!-- 处理业务的 bean-->
|
04 |
< bean name = "aopmethodtarget" class = "com.springaop.service.impl.AopMethodimpl" ></ bean >
|
05 |
<!-- 将日志 bean 和业务 bean 通过代理的方式进行代理整合 -->
|
06 |
< bean name = "aopmethod" class = "org.springframework.aop.framework.ProxyFactoryBean " >
|
07 |
< property name = "interceptorNames" >
|
08 |
< list >
|
09 |
< value > mylogadvice </ value >
|
10 |
<!-- 此处还可以放置多个处理方面的 bean-->
|
11 |
</ list >
|
12 |
</ property >
|
13 |
< property name = "target" ref = "aopmethodtarget" ></ property >
|
14 |
</ bean >
|
4. 测试类
01 |
package com.springaop.service.impl;
|
02 |
import org.springframework.context.ApplicationContext;
|
03 |
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
04 |
import com.springaop.service.IAopMethod;
|
05 |
public class test {
|
06 |
public static void main(String[] args) {
|
07 |
ApplicationContext context= new ClassPathXmlApplicationContext( "applicationContext.xml" );
|
08 |
IAopMethod method=(IAopMethod)context.getBean( "aopmethod" );
|
09 |
method.doSomesing( " zhangsan " );
|
10 |
}
|
11 |
} |
运行结果是:
系统日志: Fri Sep 24 12:45:24 CST 2010: 调用了 doSomesing : 使用了参数 [zhangsan]
hello: zhangsan
此为为转发
发表评论
-
HttpClient各种使用方法
2014-08-27 15:25 1445最近项目中用到了模拟HTTP请求的部分,下面做了一个小整合 ... -
java中BCD编码
2014-08-09 11:20 3462Java中实现的BCD编码,供有兴趣的参考,欢迎批评指正 ... -
Android数据库操作的两种方式
2014-07-10 16:56 1004Android操作数据库分文两种方式,一种是自己写sql脚本 ... -
Apache Ftp Server与spring框架融合
2014-04-01 16:33 6644最近在写一个项目,需要用到FTP服务,就从网上搜了一下,发现 ... -
Apache Ftp Server使用说明
2014-04-01 15:45 677最近公司项目需要一个FTP服务器,就从网上搜了一下发现Apac ... -
编程从业 5 年后的 14 条经验
2013-04-20 14:57 8251. 当性能遇到问题时,如果能在应用层进行计算和处理,那就把 ... -
Spring自己的轻量级定时器的两种实现方式
2013-03-04 19:35 1200Spring自己本身的轻量级 ... -
Java获取当前路径
2013-03-04 12:17 8391、利用System.getProperty()函数获取当 ... -
java udp通信
2012-12-12 11:39 1199java服务器部分: public static vo ... -
java 实现ftp的文件上传和删除
2012-12-01 11:49 17434package com.tw.ftp; impor ... -
java操作FTP,实现文件上传下载删除操作
2012-12-01 11:07 16987上传文件到FTP服务器: ... -
java下载文件的四种方式
2012-11-30 15:30 997try { ... -
模拟HTTPClient发送消息到服务器
2012-07-16 14:36 1017// 存储服务器的响应消息 Stri ... -
两个java web服务间SoapMessage对象的传递
2012-07-14 15:51 1974客户端代码: try { ... -
字符串转换成SoapMessage对象
2012-07-14 15:40 4321下面的代码可以把字符串转换成SoapMessage对象 ... -
SoapMessage对象转换成字符串
2012-07-14 15:36 6401下面的代码可以把一个SoapMessage对象转换成字符串对象 ... -
手动修改和启动在spring配置文件中配置的定时器
2012-07-12 20:50 21241、创建业务处理类 public class Task ... -
手动利用spring提供的quartz创建定时器
2012-07-12 20:41 3018手动创建并启动定时器方法: /** * & ... -
spring定时器的创建和配置
2012-07-12 20:38 68621、创建业务处理类 public class Palp ... -
Quartz 在Spring中动态设置cronExpression
2012-05-07 15:10 1037什么是动态定时任务:是由客户制定生成的,服务端只知道该去 ...
相关推荐
当涉及到日志管理时,Spring提供了多种方式来帮助开发者轻松记录应用程序的运行时信息。本篇将详细介绍如何利用Spring注解进行日志管理,以及如何获取操作的详细信息。 首先,让我们了解Spring中用于日志管理的主要...
Spring AOP 日志管理 实例LoggingThrowsAdvice.java
本资源用来展示如何使用 spring aop 进行日志记录,例子里面通过aop的配置,把产生的日志存放到当前项目的根目录下,而且对方法执行过程中的参数进行了记录,对于aop如何记录日志不清楚的同学可以看看。
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许我们在不修改源代码的情况下,对程序进行横向关注点的插入,比如日志记录、事务管理、权限检查等。在这里,我们重点关注如何利用Spring AOP实现分层...
在这个例子中,`log`对象通常是通过Spring的自动注入得到的,它已经配置好了Log4j的日志输出。 在提供的"test_AOP"这个子文件夹中,我们可以推测它包含了一个关于Spring AOP(面向切面编程)的示例。AOP是Spring...
在Spring MVC框架中,AOP(面向切面编程)是一种强大的工具,用于实现跨切面的关注点,如日志管理。本教程将详细介绍如何利用注解来配置和使用AOP来拦截Controller层的方法,以便记录执行过程中的相关信息,实现日志...
3. **Spring AOP**:可能使用AOP来处理事务管理和日志记录,确保Web服务调用的原子性和可跟踪性。 4. **Spring MVC**:如果涉及RESTful服务,Spring MVC框架将用于处理HTTP请求,将请求映射到特定的控制器方法,...
在Spring AOP(面向切面编程)中实现日志分析管理是一种常见的做法,它能帮助开发者跟踪和理解系统运行过程中的行为,同时提供详细的错误日志以支持运维工作。通过元注解的方式,我们可以轻松地将日志记录功能集成到...
压缩包中的文档可能包含了详细步骤,如何创建项目、配置Spring、编写切点和通知,以及如何运行和测试这个日志记载的例子。通过阅读文档,开发者可以理解如何在实际项目中应用这些概念。 4. **运行与测试** 使用...
这个“Spring的小例子”旨在为初学者提供一个简单的起点,让他们能够快速理解和掌握Spring的核心概念。 Spring框架的核心特性包括依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented ...
本篇将深入解析“SPRING学习小例子”,涵盖Spring的核心特性——依赖注入(DI),事务管理,面向切面编程(AOP)以及数据库操作。 一、依赖注入(Dependency Injection,简称DI) 依赖注入是Spring的核心特性,它...
总结来说,"spring架构项目案例"是一个适合初学者的实践教程,涵盖了Spring 2.0的关键特性,包括依赖注入、AOP、Spring MVC、JDBC支持、事务管理和ORM集成。通过学习和实践这个项目,开发者可以掌握Spring的核心概念...
在这个例子中,Spring将作为容器来管理和初始化Quartz的相关组件。 2. **Quartz库**:Quartz是Java的一个开源作业调度框架,可以用来安排和执行周期性的任务。它支持复杂的时间表定义,如cron表达式,同时具备高...
本文将深入探讨如何在Spring AOP中实现日志管理,以便更好地监控和调试应用程序。 首先,让我们理解什么是Spring AOP。AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,旨在提高代码的可复用性和...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...
总结一下,Spring AOP提供了一种优雅的方式来处理系统的横切关注点,如日志记录、事务管理或性能监控。通过定义切点、创建切面和配置通知,我们可以实现代码的解耦,提高可维护性和复用性。这个例子提供了学习Spring...
4. **日志配置**:默认情况下,Spring Boot 使用自己的日志解决方案,但在外部容器中可能需要调整以匹配容器的日志管理策略。 5. **资源路径**:静态资源(如 CSS、JavaScript 文件)的访问路径可能需要根据容器环境...
最后,Spring Security提供了丰富的日志和审计功能,帮助开发者追踪和理解系统的安全行为。 总之,这个"spring security 完整项目实例"涵盖了Spring Security的核心组件和用法,包括用户管理、身份验证、权限控制、...
3. **AOP(面向切面编程)**:Spring的AOP模块提供了一种方法,可以在不修改源代码的情况下,插入跨切面关注点,如日志、事务管理等。这使得业务逻辑更专注于核心功能,而其他通用功能可以作为独立的模块进行处理。 ...
在这个例子中,`exampleBean`是被Spring管理的一个Bean,它依赖于`dependencyBean`。Spring会自动为`exampleBean`注入`dependencyBean`的引用,从而实现依赖关系的管理。 Spring还提供了AOP特性,允许我们在不修改...