前段时间对公司产品做性能优化。如果单依赖于测试,进度就会很慢。所以就想着通过对代码的方式来完成,并以此来加快项目进度。具体的执行方案自然就是要知道各个业务执行时间,针对业务来进行优化。
因为项目中使用了Spring,那自然的就想到要通过 Spring interceptor来完成这个事,然后就查了一下spring-aop.jar里,已有了多个trace,monitor相关的interceptor了。然后逐个看了一下,有一个PerformanceMonitorInterceptor,能够满足需求。就直接将其引入到项目中,以供性能优化之用。
下面就贴出来我的相关配置:
1、添加一个applicationContext-performace.xml文件,加入Interceptor,并配置好相关的 拦截ponitcut:
<bean id="xxxPerformance" class="org.springframework.aop.interceptor.PerformanceMonitorInterceptor"> </bean> <aop:config> <aop:advisor pointcut="execution(* org.springframework.jdbc.core.JdbcTemplate.*(..))" advice-ref="xxxPerformance" /> <!-- 你项目中业务实现包 --> <aop:advisor pointcut="execution(* com.your.project.service.impl.*.*(..))" advice-ref="xxxPerformance" /> </aop:config>
2、 然后配置 log4j.xml,让其打到日志文件中和CLI:
<appender name="console" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.EnhancedPatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-35c{1.}:%L) %m%n"> </layout> </appender> <appender name="sql-appender" class="org.apache.log4j.RollingFileAppender"> <param name="file" value="${WAS_INSTALL_HOME}/your/logs/directory/xxx-sql.log" /> <param name="Append" value="true" /> <param name="MaxFileSize" value="100MB" /> <param name="MaxBackupIndex" value="10" /> <layout class="org.apache.log4j.EnhancedPatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-35c{1.}:%L) %m%n"> </layout> </appender> <!--SQL : log your sql used JdbcTemplate--> <logger name="org.springframework.jdbc.core.JdbcTemplate" additivity="false"> <level value="DEBUG" /> <appender-ref="console"/> <appender-ref="sql-appender"/> </logger> <!--mybatis mapper: log your sql used mybatis--> <logger name="your.mapper.directory" additivity="false"> <level value="DEBUG" /> <appender-ref="console"/> <appender-ref="sql-appender"/> </logger> <!--Performance --> <logger name="org.springframework.aop.interceptor.PerformanceMonitorInterceptor" additivity="false"> <level value="TRACE" /> <appender-ref="console"/> <appender-ref="sql-appender"/> </logger>
注意:
上面红色背景的内容是需要替换成你的项目中的相关包名或者目录。
时间: 2024-10-27 02:12:32