aspectjweaver maven(spring-framework-2.5.6中的jar包在哪个文件下面)

本文目录
- spring-framework-2.5.6中的jar包在哪个文件下面
- spring aop 需要哪些包 maven
- maven工程在eclipse上编译成功,但在命令行利用maven编译指令出现语法错误
- 基于Spring AOP实现对外接口的耗时监控
- maven+spring mvc+c3p0连接池如何配置
spring-framework-2.5.6中的jar包在哪个文件下面
ibatis的包:ibatis-sqlmap.jar
ibatis需要log4j支持: log4j.jar
spring内置的ibatis支持还需要aspect的包
根据数据库的不同还需要数据库驱动包
数据库配链接池可能还需要c3p0
如果你不是新手建议用maven2管理jar包,我可以把xml文件给你,这样就可以去官网自动下载jar包了。新手的话就无视下面的代码,手动去下载吧
《dependency》
《groupId》org.springframework《/groupId》
《artifactId》spring《/artifactId》
《version》2.5.6《/version》
《/dependency》
《!-- aspectj --》
《dependency》
《groupId》org.aspectj《/groupId》
《artifactId》aspectjrt《/artifactId》
《version》1.6.2《/version》
《/dependency》
《dependency》
《groupId》org.aspectj《/groupId》
《artifactId》aspectjweaver《/artifactId》
《version》1.6.2《/version》
《/dependency》
《dependency》
《groupId》org.aspectj《/groupId》
《artifactId》aspectjtools《/artifactId》
《version》1.6.2《/version》
《/dependency》
《dependency》
《groupId》org.springframework《/groupId》
《artifactId》spring-aspects《/artifactId》
《version》2.5.6《/version》
《/dependency》
《!-- log4j --》
《dependency》
《groupId》log4j《/groupId》
《artifactId》log4j《/artifactId》
《version》1.2.15《/version》
《exclusions》
《exclusion》
《groupId》com.sun.jmx《/groupId》
《artifactId》jmxri《/artifactId》
《/exclusion》
《/exclusions》
《/dependency》
《!-- 数据库相关 --》
《dependency》
《groupId》c3p0《/groupId》
《artifactId》c3p0《/artifactId》
《version》0.9.1《/version》
《/dependency》
《dependency》
《groupId》org.apache.ibatis《/groupId》
《artifactId》ibatis-sqlmap《/artifactId》
《version》2.3.0《/version》
《/dependency》
《dependency》
《groupId》mysql《/groupId》
《artifactId》mysql-connector-java《/artifactId》
《version》5.1.6《/version》
《/dependency》
spring aop 需要哪些包 maven
首先,spring框架的包自己去百度就好,如果要连接数据库,请告知连接那种数据库!
另外还需要一下这些包
spring-aop 切面
《dependency》
《groupId》org.springframework《/groupId》
《artifactId》spring-aop《/artifactId》
《version》4.3.10.RELEASE《/version》
《/dependency》
《dependency》
《groupId》org.springframework《/groupId》
《artifactId》spring-aspects《/artifactId》
《version》4.3.10.RELEASE《/version》
《/dependency》
《dependency》
《groupId》aopalliance《/groupId》
《artifactId》aopalliance《/artifactId》
《version》1.0《/version》
《/dependency》
《dependency》
《groupId》org.aspectj《/groupId》
《artifactId》aspectjrt《/artifactId》
《version》1.8.10《/version》
《/dependency》
《dependency》
《groupId》org.aspectj《/groupId》
《artifactId》aspectjweaver《/artifactId》
《version》1.8.10《/version》
《/dependency》
《dependency》
《groupId》cglib《/groupId》
《artifactId》cglib-nodep《/artifactId》
《version》3.2.5《/version》
《/dependency》
《dependency》
《groupId》commons-logging《/groupId》
《artifactId》commons-logging《/artifactId》
《version》1.2《/version》
《/dependency》
《dependency》
《groupId》dom4j《/groupId》
《artifactId》dom4j《/artifactId》
《version》1.6.1《/version》
《/dependency》
maven工程在eclipse上编译成功,但在命令行利用maven编译指令出现语法错误
maven 添加jar的时候,在pom.xml中找到 dependencies 节点, 添加如下 :
《dependency》
《groupId》org.aspectj《/groupId》
《artifactId》aspectjweaver《/artifactId》
《version》1.6.11《/version》
《/dependency》
maven会自动去服务器上面下载所需的jar
基于Spring AOP实现对外接口的耗时监控
AOP是Spring的核心 Spring不但自身对多种框架的集成是基于AOP 并且以非常方便的形式暴露给普通使用者 以前用AOP不多 主要是因为它以横截面的方式插入到主流程中 担心导致主流程代码不够清晰 定位问题不够方便 而在计费二期的项目里需要一个很适合用AOP来做的功能 就是要把对外接口和所调用的外部接口的耗时时间给记录下来 这个需求主要来自于计费一期的联调 常常发生系统间交互不够顺畅的情况 这就需要看每个接口调用时间来判定是谁的问题
计费中心是整个后台系统的中间环节 与其他系统交互很多 这样的接口也很多 如果在每个接口的调用前后加时间记录比较繁琐 也影响主流程代码的美观 因此比较优雅的方式是用AOP 在不侵入原有代码的情况下 加上对接口调用的监控 并且可以在不需要的时候很容易移除 今天尝试了一下 感觉还挺好用 下面讲述一下实施步骤
)引入包依赖
本项目基于maven构建 因此加上包依赖比较方便 我需要的AOP依赖库有以下三个
《dependency》
《groupId》 springframework《/groupId》
《artifactId》spring aop《/artifactId》
《version》 《/version》
《/dependency》
《dependency》
《groupId》 aspectj《/groupId》
《artifactId》aspectjweaver《/artifactId》
《version》 《/version》
《/dependency》
《dependency》
《groupId》 aspectj《/groupId》
《artifactId》aspectjrt《/artifactId》
《version》 《/version》
《/dependency》
《dependency》
《groupId》 springframework《/groupId》
《artifactId》spring aop《/artifactId》
《version》 《/version》
《/dependency》
《dependency》
《groupId》 aspectj《/groupId》
《artifactId》aspectjweaver《/artifactId》
《version》 《/version》
《/dependency》
《dependency》
《groupId》 aspectj《/groupId》
《artifactId》aspectjrt《/artifactId》
《version》 《/version》
《/dependency》
)加上AOP的Spring配置文件
billing spring aop xml:
《?xml version= encoding= UTF ?》
《beans xmlns=
xmlns:xsi= instance
xmlns:aop=
xmlns:tx=
xsi:schemaLocation= beans xsd
aop xsd
tx xsd 》
《bean id= openApiLogAspect class= bu billing framework aop OpenApiLogAspect 》
《/bean》
《aop:config》
《! 配置aspect切面类 》
《aop:aspect ref= openApiLogAspect 》
《! 配置pointcut 即切入点 对哪些类的哪些方法起到AOP的作用 》
《aop:pointcut id= E *** PriceService
expression= execution(* product E *** PriceService *()) /》
《aop:pointcut id= E *** ProductService
expression= execution(* product E *** ProductService *()) /》
《aop:pointcut id= IAuthorizeControllerService
expression= execution(* alibaba bss pc server remoting IAuthorizeControllerService *()) /》
《aop:pointcut id= IOpenApiOrderItemService
expression= execution(* llect IOpenApiOrderItemService *()) /》
《aop:pointcut id= IOpenApiBillingCollectService
expression= execution(* llect IOpenApiBillingCollectService *()) /》
《aop:pointcut id= IOpenApiInvoiceService
expression= execution(* bu billing api invoice IOpenApiInvoiceService *()) /》
《aop:pointcut id= IOpenApiChargeProductInfoService
expression= execution(* llect IOpenApiChargeProductInfoService *()) /》
《! 配置advice 这里采用在业务方法执行前后进行拦截 》
《aop:around method= logExecuteTime pointcut ref= E *** PriceService /》
《aop:around method= logExecuteTime pointcut ref= E *** ProductService /》
《aop:around method= logExecuteTime pointcut ref= IAuthorizeControllerService /》
《aop:around method= logExecuteTime pointcut ref= IOpenApiOrderItemService /》
《aop:around method= logExecuteTime pointcut ref= IOpenApiBillingCollectService /》
《aop:around method= logExecuteTime pointcut ref= IOpenApiInvoiceService /》
《aop:around method= logExecuteTime pointcut ref= IOpenApiChargeProductInfoService /》
《/aop:aspect》
《/aop:config》
《/beans》
《?xml version= encoding= UTF ?》
《beans xmlns=
xmlns:xsi= instance
xmlns:aop=
xmlns:tx=
xsi:schemaLocation= beans xsd
aop xsd
tx xsd 》
《bean id= openApiLogAspect class= bu billing framework aop OpenApiLogAspect 》
《/bean》
《aop:config》
《! 配置aspect切面类 》
《aop:aspect ref= openApiLogAspect 》
《! 配置pointcut 即切入点 对哪些类的哪些方法起到AOP的作用 》
《aop:pointcut id= E *** PriceService
expression= execution(* product E *** PriceService *()) /》
《aop:pointcut id= E *** ProductService
expression= execution(* product E *** ProductService *()) /》
《aop:pointcut id= IAuthorizeControllerService
expression= execution(* alibaba bss pc server remoting IAuthorizeControllerService *()) /》
《aop:pointcut id= IOpenApiOrderItemService
expression= execution(* llect IOpenApiOrderItemService *()) /》
《aop:pointcut id= IOpenApiBillingCollectService
expression= execution(* llect IOpenApiBillingCollectService *()) /》
《aop:pointcut id= IOpenApiInvoiceService
expression= execution(* bu billing api invoice IOpenApiInvoiceService *()) /》
《aop:pointcut id= IOpenApiChargeProductInfoService
expression= execution(* llect IOpenApiChargeProductInfoService *()) /》
《! 配置advice 这里采用在业务方法执行前后进行拦截 》
《aop:around method= logExecuteTime pointcut ref= E *** PriceService /》
《aop:around method= logExecuteTime pointcut ref= E *** ProductService /》
《aop:around method= logExecuteTime pointcut ref= IAuthorizeControllerService /》
《aop:around method= logExecuteTime pointcut ref= IOpenApiOrderItemService /》
《aop:around method= logExecuteTime pointcut ref= IOpenApiBillingCollectService /》
《aop:around method= logExecuteTime pointcut ref= IOpenApiInvoiceService /》
《aop:around method= logExecuteTime pointcut ref= IOpenApiChargeProductInfoService /》
《/aop:aspect》
《/aop:config》
《/beans》
我是基于配置完成AOP接入 这样做的好处是不需要对原有主流程代码有任何浸入 并且也比较容易移除本AOP的拦截 这段代码主要就是配置aspect pointcut和advice
)编写监控耗时的advice
OpenApiLogAspect:
public class OpenApiLogAspect {
private static LoggerService logger = LoggerFactory getLogger(OpenApiLogAspect class);
public Object logExecuteTime(ProceedingJoinPoint joinPoint) throws Throwable{
Date start = new Date();
try{
return joinPoint proceed(joinPoint getArgs());
}catch(Exception err){
throw err;
}finally{
Date end = new Date();
( OpenApiExecuteTime: +joinPoint getSignature() getName()+ takes +(end getTime() start getTime())+ ms );
}
}
}
public class OpenApiLogAspect {
private static LoggerService logger = LoggerFactory getLogger(OpenApiLogAspect class);
public Object logExecuteTime(ProceedingJoinPoint joinPoint) throws Throwable{
Date start = new Date();
try{
return joinPoint proceed(joinPoint getArgs());
}catch(Exception err){
throw err;
}finally{
Date end = new Date();
( OpenApiExecuteTime: +joinPoint getSignature() getName()+ takes +(end getTime() start getTime())+ ms );
}
}
}
此段代码就是基于around的方式来拦截接口调用 在实际调用的前后加上时间记录 并最后在日志里打印出时间差 其中joinPoint proceed(joinPoint getArgs());是对实际接口的调用
)使监控可以配置化
此功能只会在调试阶段使用 并不需要在生产环境中运行 因此需要可以配置是否监控接口 实施这个配置化很简单 只需要通过配置决定是否把aop spring的配置文件加入到容器里就可以了 因此在总容器applicationContext xml vm里加上如下代码
#if(${monitor_openapi_showTime}== true )
《import resource= classpath*:bean/billing spring aop xml /》
#end
在编译打包过程中会根据变量monitor_openapi_showTime来决定是否把billing spring aop xml引入进来
)运行效果
在监控开启的情况下 若发生接口调用 能从日志里看到如下记录
: : INFO bu billing framework aop OpenApiLogAspect :: OpenApiExecuteTime:installOrderItem takes ms
: : INFO bu billing framework aop OpenApiLogAspect :: OpenApiExecuteTime:installOrderItem takes ms
lishixinzhi/Article/program/Java/ky/201311/28361maven+spring mvc+c3p0连接池如何配置
pom.xml
《project xmlns="
xsi:schemaLocation="
《modelVersion》4.0.0《/modelVersion》
《groupId》com.java《/groupId》
《artifactId》Dao《/artifactId》
《version》0.0.1-SNAPSHOT《/version》
《packaging》war《/packaging》
《build》
《plugins》
《plugin》
《groupId》org.apache.maven.plugins《/groupId》
《artifactId》maven-compiler-plugin《/artifactId》
《configuration》
《target》1.6《/target》
《source》1.6《/source》
《encoding》UTF-8《/encoding》
《/configuration》
《/plugin》
《/plugins》
《/build》
《dependencies》
《dependency》
《groupId》org.springframework《/groupId》
《artifactId》spring-context《/artifactId》
《version》3.2.12.RELEASE《/version》
《/dependency》
《dependency》
《groupId》org.springframework《/groupId》
《artifactId》spring-tx《/artifactId》
《version》3.2.12.RELEASE《/version》
《/dependency》
《dependency》
《groupId》org.springframework《/groupId》
《artifactId》spring-test《/artifactId》
《version》3.2.12.RELEASE《/version》
《/dependency》
《dependency》
《groupId》org.springframework《/groupId》
《artifactId》spring-orm《/artifactId》
《version》3.2.12.RELEASE《/version》
《/dependency》
《dependency》
《groupId》junit《/groupId》
《artifactId》junit《/artifactId》
《version》4.12《/version》
《/dependency》
《dependency》
《groupId》org.springframework《/groupId》
《artifactId》spring-expression《/artifactId》
《version》3.2.12.RELEASE《/version》
《/dependency》
《dependency》
《groupId》org.springframework《/groupId》
《artifactId》spring-webmvc《/artifactId》
《version》3.2.12.RELEASE《/version》
《/dependency》
《dependency》
《groupId》org.hibernate《/groupId》
《artifactId》hibernate-core《/artifactId》
《version》4.1.12.Final《/version》
《/dependency》
《dependency》
《groupId》commons-dbcp《/groupId》
《artifactId》commons-dbcp《/artifactId》
《version》1.4《/version》
《/dependency》
《dependency》
《groupId》com.oracle《/groupId》
《artifactId》ojdbc5《/artifactId》
《version》11.1.0.0《/version》
《/dependency》
《dependency》
《groupId》org.aspectj《/groupId》
《artifactId》aspectjrt《/artifactId》
《version》1.8.0《/version》
《/dependency》
《dependency》
《groupId》org.aspectj《/groupId》
《artifactId》aspectjweaver《/artifactId》
《version》1.8.0《/version》
《/dependency》
《/dependencies》
《/project》
C0P3配置:
《bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql://localhost:3306/YTOAttendManageSystem"
p:user="root"
p:password="1234"
p:maxPoolSize="40"
p:minPoolSize="1"
p:initialPoolSize="1"
p:maxIdleTime="20"/》
至于如何将c3p0的具体配置参数放到properties文件里,以C0P3为例:
《bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close"
p:driverClass="${driverClass}"
p:jdbcUrl="${jdbcUrl}"
p:user="${user}"
p:password="${password}"
p:maxPoolSize="${maxPoolSize}"
p:minPoolSize="${minPoolSize}"
p:initialPoolSize="${initialPoolSize}"
p:maxIdleTime="${maxIdleTime}"/》
建一个properties文件:
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/YTOAttendManageSystem
…………

更多文章:
javascript动效(怎样用js编写一个开关按钮实现动态效果)
2025年7月1日 02:30
雪花秀essential(essentialfirmingcreamex是什么意思)
2026年8月21日 20:30
javasublist用法(Java中linkedlist集合取出部分元素的方法)
2026年5月11日 20:00
literaturereview网站(literaturereview的查重率很高要紧吗)
2026年4月30日 13:30
javamain打包jar运行(java 如何运行带有main方法的jar文件)
2025年6月24日 16:45
paper软件下载(小红车wallpaper电脑端怎么下载)
2025年12月21日 15:15
搜狗浏览器在线使用(电脑如何给搜狗浏览器加速|电脑使用搜狗浏览器加速功能的方法)
2026年9月6日 10:15
html版权标签(html 代码 meta name=“Copyright“ content=“Tencent“的意思)
2026年3月29日 02:15
python读取桌面上的文件(python读取文件操作文件放在哪里)
2025年10月29日 06:30
文本编辑器的(Git Window 下设置默认的文本编辑器)
2025年7月25日 20:30
AT、CVT和双离合究竟哪个更好,老?sigmaplot、spss和R语言的区别 相同点和不同点 总的说哪个更好
2025年11月27日 00:45
html跳转页面(HTML的A标签在本页跳转,这个页面是重新下载的吗)
2026年7月24日 15:45










