我有基于AOP的登录功能,并具有以下设置
Context xml配置:
<bean id="performanceMonitor"
class="org.springframework.aop.interceptor.PerformanceMonitorInterceptor" />
<aop:config>
<aop:pointcut id="allServiceMethods"
expression="execution(* com.eshop.sfweb.service.impl..*(..))" />
<aop:pointcut id="allEpServices"
expression="execution(* com.service.catalog..*(..))" />
<aop:advisor pointcut-ref="allServiceMethods"
advice-ref="performanceMonitor" order="2" />
<aop:advisor pointcut-ref="allEpServices"
advice-ref="performanceMonitor" order="2" />
</aop:config>
Log4j属性:
log4j.logger.org.springframework.aop.interceptor.PerformanceMonitorIntercept
or=${ep.perflog.level},PERFORMANCE
log4j.appender.PERFORMANCE.File=webAppRoot:WEB-INF/log/performance.log
log4j.appender.PERFORMANCE.threshold=DEBUG
log4j.appender.PERFORMANCE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.PERFORMANCE.DatePattern='.'yyyy-MM-dd
log4j.appender.PERFORMANCE.layout=org.apache.log4j.PatternLayout
log4j.appender.PERFORMANCE.layout.ConversionPattern=%d -- %-5p [%t | %F:%L]
-- %m%n
有什么方法可以根据环境禁用AOP调用? 我可以非常轻松地禁用日志记录,但是我可以禁用/启用整个后台进程和调用吗?
如果需要澄清,请告知。
答案 0 :(得分:3)
由于您使用的是Spring AOP,因此启用或禁用方面的一种快速方法可能是简单地使用Bean配置文件。
定义个人资料enableAOP
:
将aop:config包装在特定配置文件下的配置文件中
<beans profile="enableAOP">
<aop:config> <aop:pointcut id="allServiceMethods"
expression="execution(* com.eshop.sfweb.service.impl..*(..))" />
<aop:pointcut id="allEpServices" expression="execution(*
com.service.catalog..*(..))" />
....
</beans>
现在,无论您希望启用哪个特定方面的环境,只需运行enableAOP
个人资料。
答案 1 :(得分:2)
使用空aop-context-off.xml
声明创建一个空的xml文件(<beans>
)。
然后使用您的AOP声明创建一个aop-context-enabled.xml
文件。
最后,在导入XML时,您可以使用:
<import resource="aop-context-${AOP_CONTEXT_SUFFIX:off}.xml" />
这将查找名为AOP_CONTEXT_SUFFIX的系统变量,如果未找到,则将值强制为off
。
因此,在上面的示例中,通过将AOP_CONTEXT_SUFFIX
设置为enabled
,它将加载aop-context-enabled.xml
因此,交换机是系统变量,您可以在服务器启动时轻松启用/禁用它。