- 浏览: 2262744 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
关键字 :sping aop实现日志功能
附件是sping aop实现日志功能的完整的工程例子,
但是目前存在一个问题没有解决,就是直接用下面的方式加载配置文件可以拦截目标方法:
ClassPathXmlApplicationContext beanApp = new ClassPathXmlApplicationContext(
"applicationContext.xml");
但是 作为web工程 在web.xml中加载 启动tomcat并且访问的时候拦截不到目标方法该问题已经解决 ......
spring AOP相关知识请看完:
Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理。(建议尽量使用JDK的动态代理)
如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理。所有该目标类型实现的接口都将被代理。若该目标对象没有实现任何接口,则创建一个CGLIB代理。
如果你希望强制使用CGLIB代理,(例如:希望代理目标对象的所有方法,而不只是实现自接口的方法)那也可以。但是需要考虑以下问题:
无法通知(advise)Final 方法,因为他们不能被覆写。
你需要将CGLIB 2二进制发行包放在classpath下面,与之相较JDK本身就提供了动态代理
强制使用CGLIB代理需要将 <aop:config> 的 proxy-target-class 属性设为true:
<aop:config proxy-target-class="true">
...
</aop:config>
当需要使用CGLIB代理和@AspectJ自动代理支持,请按照如下的方式设置 <aop:aspectj-autoproxy> 的 proxy-target-class 属性:
<aop:aspectj-autoproxy proxy-target-class="true"/>
附件是完整的例子,可以直接测试运行Main.java
项目中使用时直接拷贝其中的LogIntercept类(该类直接是注解注解方式),只需要修改该类中的@Pointcut("execution(public * com.creatar.portal.service..*.*(..))") 包名称为你真实需要代理的包名即可,注意spring配置文件中一定要加上<aop:aspectj-autoproxy/>这句话 或强制代理类而不会接口加上<aop:aspectj-autoproxy proxy-target-class="true"/> 这句话
附件中的testWeblogic2项目是一个web项目,部署后直接打开http://localhost:8080/testWeblogic2/main.jsp然后点击 增加用户 提交后即可测试AOP代理日志功能(testWeblogic2还没有上传 在家中 ...)
关于代理类中获取request对象:
1、struts2 控制器:
@SuppressWarnings("unused")
private HttpServletRequest getStrutsRequest(){
HttpServletRequest request = ServletActionContext.getRequest();
return request;
}
1、spring 控制器:
@SuppressWarnings("unused")
private HttpServletRequest getSpringRequest(){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
return request;
}
附件是sping aop实现日志功能的完整的工程例子,
但是目前存在一个问题没有解决,就是直接用下面的方式加载配置文件可以拦截目标方法:
ClassPathXmlApplicationContext beanApp = new ClassPathXmlApplicationContext(
"applicationContext.xml");
但是 作为web工程 在web.xml中加载 启动tomcat并且访问的时候拦截不到目标方法该问题已经解决 ......
spring AOP相关知识请看完:
Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理。(建议尽量使用JDK的动态代理)
如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理。所有该目标类型实现的接口都将被代理。若该目标对象没有实现任何接口,则创建一个CGLIB代理。
如果你希望强制使用CGLIB代理,(例如:希望代理目标对象的所有方法,而不只是实现自接口的方法)那也可以。但是需要考虑以下问题:
无法通知(advise)Final 方法,因为他们不能被覆写。
你需要将CGLIB 2二进制发行包放在classpath下面,与之相较JDK本身就提供了动态代理
强制使用CGLIB代理需要将 <aop:config> 的 proxy-target-class 属性设为true:
<aop:config proxy-target-class="true">
...
</aop:config>
当需要使用CGLIB代理和@AspectJ自动代理支持,请按照如下的方式设置 <aop:aspectj-autoproxy> 的 proxy-target-class 属性:
<aop:aspectj-autoproxy proxy-target-class="true"/>
附件是完整的例子,可以直接测试运行Main.java
项目中使用时直接拷贝其中的LogIntercept类(该类直接是注解注解方式),只需要修改该类中的@Pointcut("execution(public * com.creatar.portal.service..*.*(..))") 包名称为你真实需要代理的包名即可,注意spring配置文件中一定要加上<aop:aspectj-autoproxy/>这句话 或强制代理类而不会接口加上<aop:aspectj-autoproxy proxy-target-class="true"/> 这句话
附件中的testWeblogic2项目是一个web项目,部署后直接打开http://localhost:8080/testWeblogic2/main.jsp然后点击 增加用户 提交后即可测试AOP代理日志功能(testWeblogic2还没有上传 在家中 ...)
关于代理类中获取request对象:
1、struts2 控制器:
@SuppressWarnings("unused")
private HttpServletRequest getStrutsRequest(){
HttpServletRequest request = ServletActionContext.getRequest();
return request;
}
1、spring 控制器:
@SuppressWarnings("unused")
private HttpServletRequest getSpringRequest(){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
return request;
}
- SpringAopTest.rar (4.8 MB)
- 下载次数: 90
发表评论
-
Dubbo Main启动方式浅析
2015-05-27 13:54 15456关键字:Dubbo Main启动方式浅析 服务容器是一个s ... -
spring中的数据源配置信息加密方案
2014-10-22 10:36 1078关键字:spring中的数据源配置信息加密方案 附件是完整的 ... -
基于Spring可扩展Schema提供自定义配置支持
2014-07-21 18:38 1010关键字:基于Spring可扩展Schema提供自定义配置支持 ... -
spring 自定义注解实现(MVC层)
2014-07-21 17:32 868关键字:spring 自定义注解实现(MVC层) 前言 在 ... -
Spring MVC 单元测试
2013-12-10 17:56 7979关键字:Spring MVC 单元测试 下面一步一步带领大家 ... -
优化程序之前,可用Jamon来监测你的Spring应用
2013-11-28 23:52 2059关键字:优化程序之前,可用Jamon来监测你的Spring应 ... -
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
2013-11-14 14:01 77284关键字:spring容器加载完毕做一件事情(利用Context ... -
Java MVC框架性能比较 jsp、struts1、struts2、springmvc3
2013-10-30 17:41 2287关键字:Java MVC框架性能比较 jsp、struts1 ... -
spring JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)
2013-03-26 15:07 9200关键字:spring JTA集成JOTM或Atomikos配置 ... -
mongodb spring支持
2012-12-17 10:11 1027关键字:mongodb spring支持 相关链接: ... -
Spring + CXF + 注解方式(webService)
2012-11-02 11:34 6776关键字:Spring + CXF + 注解方式(webS ... -
Spring + Xfire + 注解方式
2012-11-01 15:08 1257关键字:Spring 与集成 Xfire 注解方式( Spr ... -
spring rest mvc使用RestTemplate调用
2012-11-01 12:25 70415关键字:RestTemplate使用 可参考博客: ... -
java面向切面编程
2011-09-24 15:37 2367关键字:java面向切面编程 原理简述:java面向切面编 ... -
SpringMVC添加支持Http的delete、put请求
2011-06-02 23:28 3412浏览器form表单只支持GET与POST请求,而DEL ... -
springMVC有关RESTfull
2011-06-02 22:58 5331关键字:springMVC有关RESTfull Sp ... -
spring文件上传(3.0)
2011-06-02 22:44 2961关键字:Spring CommonsMultipartReso ... -
spring3.0多文件上传例子
2011-06-02 22:43 6675关键字:spring3.0多文件 ... -
spring3.0 mvc rest 注解之@
2011-05-16 22:17 3551关键字:spring mvc rest 注解之@ 本文转自h ... -
spring3.0 mvc和rest入门例子
2011-05-07 19:22 2872关键字:spring3.0 mvc和rest入门例子 现在 ...
相关推荐
Spring AOP(面向切面编程)是一种强大的工具,可以用来优雅地实现日志功能。下面我们将深入探讨如何使用Spring AOP来实现日志功能,以及这一技术的核心概念和应用场景。 首先,Spring AOP是Spring框架的一个核心...
综上所述,Spring AOP提供了一种优雅的方式,让我们能够轻松地在不修改业务代码的情况下添加日志功能。通过理解并实践这个例子,开发者可以更好地掌握AOP在日志记载方面的应用,并将其运用到自己的项目中。
4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑实现 (需要知道原理的请看spring aop源码,此处不做赘述) 3、...
本资源用来展示如何使用 spring aop 进行日志记录,例子里面通过aop的配置,把产生的日志存放到当前项目的根目录下,而且对方法执行过程中的参数进行了记录,对于aop如何记录日志不清楚的同学可以看看。
- 代理对象在调用实际方法前后,会插入相应的通知代码,从而实现AOP功能。 - **CGLIB代理**: - 如果目标对象没有实现任何接口,Spring会使用CGLIB库创建一个目标对象的子类,并在子类中插入通知代码。 - CGLIB...
Spring AOP 日志管理 实例LoggingThrowsAdvice.java
3. `Main`类:启动应用,调用`Service`类的方法以触发AOP日志记录。 4. `pom.xml`:Maven配置文件,引入了Spring AOP和日志框架的依赖。 5. `application.properties`或`application.yml`:配置文件,可能包含日志...
Spring的AOP实现的日志功能案例.zip Spring的AOP实现的日志功能案例.zip Spring的AOP实现的日志功能案例.zip Spring的AOP实现的日志功能案例.zip Spring的AOP实现的日志功能案例.zip Spring的AOP实现的日志功能案例....
这个"spring aop jar 包"包含了实现这一功能所需的类和接口,使得开发者能够轻松地实现面向切面的编程。 在Spring AOP中,主要涉及以下几个核心概念: 1. **切面(Aspect)**:切面是关注点的模块化,比如日志记录...
本项目旨在演示如何在Spring AOP中添加日志功能,以实现对应用程序执行过程的透明跟踪。通过使用Java 1.8,我们可以利用其新特性,如Lambda表达式,来简化代码。 首先,让我们理解Spring AOP的基本概念。AOP是面向...
Spring框架中的AOP模块使用了动态代理来实现AOP概念。Spring AOP允许开发者定义切面,并在这些切面中指定拦截的方法。Spring AOP支持不同的代理策略,包括JDK动态代理和CGLIB代理。如果被代理的类没有实现接口,...
在这里,我们重点关注如何利用Spring AOP实现分层日志记录。 **一、Spring AOP基本概念** 1. **切面(Aspect)**: 切面是封装了横切关注点的模块,例如日志记录就是一个横切关注点,它横跨多个对象和类。 2. **通知...
### Spring AOP 实现流程日志跟踪 #### 一、背景与目的 在现代软件开发过程中,为了确保系统的稳定性和可维护性,通常会引入非功能性的需求来增强应用程序的功能,比如日志记录、安全控制等。这些需求往往不是业务...
基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于...
Spring AOP代理是框架为实现切面功能创建的对象,它在运行时实现切面协议。Spring提供了两种代理方式:JDK动态代理和CGLIB代理。JDK代理适用于那些实现了接口的类,而CGLIB代理则适用于没有实现接口的类。 引介...
在这个场景中,我们将使用Spring AOP来实现一个日志记录的功能,以追踪系统中各个方法的调用情况,包括访问时间以及传递的参数。下面将详细阐述如何实现这一目标。 首先,我们需要了解AOP的基本概念。AOP的核心是切...
在Spring Boot应用中,Spring AOP(面向切面编程)是一种强大的工具,它允许我们创建横切关注点,如日志记录、权限检查等,这些关注点可以被编织到应用程序的多个点上,而无需侵入核心业务逻辑。在本案例中,我们将...