想在web应用的服务器端避免编写太多一样的日志输出代码。我们一般采用aop技术,现在比较流行的是在sping中配置aop功能,网上很多相关资料。在不使用spring等容器注入技术的情况下,我们一般采用aspectj技术。
在此我分享一下采用aspectj输出日志时的运行环境和开发环境的配置。
下载相关包
aspectj的核心包 | http://eclipse.org/aspectj/downloads.php | 下载后解压缩,在目录中有aspectjrt.jar,aspectjweaver.jar(还有一些其他的,我们暂时只用这两个) |
eclipse插件(ajdt) | http://www.eclipse.org/ajdt/downloads/ | 下载与eclipse相配的ajdt |
我使用的开发环境:
eclipse3.7
tomcat6.0.18
jdk1.6.12
配置开发环境
1,将下载的ajdt作为插件加入到eclipse中。
2,将aspectjrt.jar加到工程的库里面。
3,在tomcat的JVM设置中加入如下配置。
-javaagent:"C:\JAVA\APPServer\Tomcat\apache-tomcat-6.0.18\lib\aspectjweaver.jar"
为上面下载的aspectjweaver.jar的绝对路径。
4,编写aop.xml(文件名固定)
<?xml version="1.0" encoding="UTF-8"?>
<aspectj>
<aspects>
<concrete-aspect name="com.test.framework.aspect._Smsf_Aspect"
extends="com.test.framework.aspect.AbstractAspect">
<pointcut name="runAccess"
expression="
execution(* com.test.framework.web.action.*.*(..)) ||
execution(* com.test.demo.web.handle.*.*(..)) ||
execution(* com.test.demo.dao.impl.*.*(..))"/>
</concrete-aspect>
</aspects>
</aspectj>
其中的name属性是一个由系统自动产生的类,不需要特意创建。
5,将aop.xml配置到java的/src/META-INF/中,确保编译后的路径为:WEB-INF/classes/META-INF/aop.xml.
6,编写步骤4中extends制定的虚拟类。
@Aspect
public abstract class AbstractAspect {
// abstract pointcut: no expression is defined
@Pointcut
abstract void runAccess();
@Before("runAccess()")
public void before(JoinPoint jp) {
LogLogic.writeMethodStartlog(jp);
}
@After("runAccess()")
public void after(JoinPoint jp) {
LogLogic.writeMethodEndlog(jp);
}
}
7,运行代码。
配置运行环境
在开发环境中打好的war包放在web服务器(tomcat)中运行时,我们只需将启动tomcat的java命令中加上步骤3中所述的参数。
更改catalina.bat文件的JAVA_OPTS属性:
set JAVA_OPTS=%JAVA_OPTS% -javaagent:"C:\JAVA\APPServer\Tomcat\apache-tomcat-6.0.18\lib\aspectjweaver.jar"
用startup.bat启动服务器即可。
分享到:
相关推荐
NULL 博文链接:https://thinkdifferent.iteye.com/blog/2037754
要在 Spring 应用中使用 AspectJ 注解, 必须在 classpath 下包含 AspectJ 类库: aopalliance.jar、aspectj.weaver.jar 和 spring-aspects.jar等jar包,文件已打包上传。
Spring 使用AspectJ 实现 AOP(基于xml文件、基于注解)
android用aspectj在android如何用动态代理的
除了Spring的aop,还有AspectJ框架的aop,这里是在Spring框架中使用AspectJ框架实现AOP的补充jar包,还有一个jar包会随着Spring框架的版本更新而更新。这也是分开成spring框架包和在Spring框架中使用AspectJ框架实现...
·在java和j2ee设计模式实现中使用方面 ·使用aop特有的设计模式,增强现有的java应用程序 本书展示了为什么以及如何使用aop技术来解决常见的java开发问题。本书利用受欢迎的问题/解决方案/讨论格式,介绍了...
什么是AOP AOP是 Aspect Oriented Programming 的缩写,即...在Android项目中使用AspectJ 如果使用原生AspectJ在项目中配置会非常麻烦,在GitHub上有个开源的SDK gradle_plugin_android_aspectjx基于gradle配置即可。
Spring 使用AspectJ 实现 AOP之前置通知小例子,实际跑过,验证可信。
aspectj-1.7.0.jar aspectj的包
aspectj
Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动
Android AspectJ 简单使用
Aop之AspectJ解读demo,主要是讲解Aspectj使用框架以及使用场景入门实例
基于XML的声明式AspectJ 元素及其子元素如下: 小提示:图中灰色部分标注的元素即为常用的配置元素 XML文件中常用元素的配置方式如下: 基于XML的声明式AspectJ <bean id="myAspect" class="com.itheima.aspectj....
学习aspectJ,帮助学习面向方面的知识。
Aspectj开发指南 博文链接:https://g007n.iteye.com/blog/249602
Spring spectJ AOP 前置通知 后置通知 返回通知 异常通知 环绕通知
aspectj的jar spring使用aop需要的jar 使用aop
Aop框架AspectJ 的语法介绍JPoint Pointcut Signature
org.aspectj,aspectj项目库(org.aspectj).zip,建筑物