Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用AspectJ加载时间编织和Spring AOP?_Java_Spring_Aop_Aspectj_Spring Aop - Fatal编程技术网

Java 如何使用AspectJ加载时间编织和Spring AOP?

Java 如何使用AspectJ加载时间编织和Spring AOP?,java,spring,aop,aspectj,spring-aop,Java,Spring,Aop,Aspectj,Spring Aop,我想使用AspectJ加载时编织来拦截静态方法。我跟着。当我执行以下测试时,静态方法被很好地拦截。但是,当我直接运行主类时,它不会被拦截 根据,我通过isspectjagentload()测试了所需的代理是否加载良好。结果:在这两种情况下,它的负载良好 配置: 方面类: @方面 公开课表演设备{ @在(“执行(*org.springbyexample.aspectjLoadTimeWeaving.MyStaticClass.MyStaticClass(..))之前) 公共无效日志(连接点连接

我想使用AspectJ加载时编织来拦截静态方法。我跟着。当我执行以下测试时,静态方法被很好地拦截。但是,当我直接运行主类时,它不会被拦截

根据,我通过
isspectjagentload()
测试了所需的代理是否加载良好。结果:在这两种情况下,它的负载良好

配置:


方面类:

@方面
公开课表演设备{
@在(“执行(*org.springbyexample.aspectjLoadTimeWeaving.MyStaticClass.MyStaticClass(..))之前)
公共无效日志(连接点连接点){
System.out.println(“***劫持:”+joinPoint.getSignature().getName());
}
}
META-INF/aop.xml文件:


主要类别:

公共类处理器运行程序{
公共静态void main(字符串[]args){
ApplicationContext ctx=new ClassPathXmlApplicationContext(“/application context.xml”,ProcessorRunner.class);
if(isSpectJagentLoaded())System.out.println(“***AspectJ代理加载***”);
MyStaticClass.MyStaticClass();
}
公共静态布尔值IsSpectJagentLoaded(){
试一试{
org.aspectj.weaver.loadtime.Agent.getInstrumentation();
}捕获(NoClassDefFoundError |不支持操作异常e){
返回false;
}
返回true;
}
}
测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(位置={“/应用程序上下文.xml”})
公共类ProcessorTest{
@试验
public void testProcessorFromContext(){
如果(IsSpectJagentLoaded()){
System.out.println(“***AspectJ所需代理加载***”);
}
ProcessorRunner.main(新字符串[]{“myArg”});
}
公共静态布尔值IsSpectJagentLoaded(){
试一试{
org.aspectj.weaver.loadtime.Agent.getInstrumentation();
}捕获(NoClassDefFoundError |不支持操作异常e){
系统输出打印ln(e);
返回false;
}
返回true;
}
}
为什么期望的方法在测试类中被很好地拦截,而在主类中却没有


编辑:如果有帮助,我会添加堆栈跟踪

1) 当通过执行测试确认正常时:

objc[73666]:类JavaLaunchHelper在/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/bin/Java和/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/libinstrument.dylib中实现。将使用其中一个。哪一个是未定义的。
00:06:25484 |-ch.qos.logback.classic.LoggerContext[default]中的信息-找不到资源[logback.groovy]
00:06:25484 |-ch.qos.logback.classic.LoggerContext[default]中的信息-在[file:/Users/richard/dev/spring by example/core/aspectj加载时编织/target/test classes/logback test.xml]中找到资源[logback test.xml]
00:06:25654 |-ch.qos.logback.classic.joran.action.ConfigurationAction-debug属性中的信息未设置
00:06:25935 |-ch.qos.logback.core.joran.action.AppenderAction中的信息-即将实例化[ch.qos.logback.core.ConsoleAppender]类型的appender
00:06:25958 |-ch.qos.logback.core.joran.action.AppenderAction中的信息-将appender命名为[控制台]
00:06:26098 |-ch.qos.logback.core.ConsoleAppender[CONSOLE]中的警告-此追加器不再允许布局作为子组件,而是设置编码器。
00:06:26098 |-ch.qos.logback.core.ConsoleAppender[CONSOLE]中的警告-为确保兼容性,请在LayoutWrappingCoder中包装布局。
00:06:26098 |-在ch.qos.logback.core.ConsoleAppender[CONSOLE]中发出警告-另请参阅http://logback.qos.ch/codes.html#layoutInsteadOfEncoder 详情
00:06:26099 |-ch.qos.logback.classic.joran.action.LoggerAction中的信息-将记录器[org.springbyexample]的可加性设置为false
00:06:26099 |-ch.qos.logback.classic.joran.action.LevelAction-org.springbyexample级别中的信息设置为调试
00:06:26100 |-ch.qos.logback.core.joran.action.AppenderRefAction中的信息-将名为[CONSOLE]的appender附加到记录器[org.springbyexample]
00:06:26100 |-ch.qos.logback.classic.joran.action.LevelAction中的信息-根级别设置为信息
00:06:26100 |-ch.qos.logback.core.joran.action.AppenderRefAction中的信息-将名为[CONSOLE]的appender附加到记录器[ROOT]
00:06:26100 |-ch.qos.logback.classic.joran.action.ConfigurationAction中的信息-配置结束。
00:06:26102 |-ch.qos.logback.classic.joran中的信息。JoranConfigurator@1324409e-将当前配置注册为安全回退点
avr。24 2017 22:06:26 INFO org.springframework.test.context.support.DefaultTestContextBootstrapper-从位置[META-INF/spring.factories]加载默认TestExecutionListener类名:[org.springframework.test.context.web.ServletTestExecutionListener,org.springframework.test.context.support.DirtiesContextTestExecutionListener,org.springframework.test.context.transaction.TransactionalTestExecutionListener,org.springframework.test.context.jdbc.SqlscriptstexecutionListener]
avr.24 2017 22:06:26 INFO org.springframework.test.context.support.DefaultTestContextBootstrapper-无法实例化TestExecutionListener[org.springframework.test.context.web.ServletTestExecutionListener]。请指定自定义侦听器类或使默认侦听器类(及其所需依赖项)可用。有问题的类:[javax/servlet/ServletContext]
avr.24 2017 22:06:26 INFO org.springframework.test.context.support.DefaultTestContextBootstrapper-无法实例化TestExecutionListener[org.springframework.test.context.jdbc.sqlscriptsteExecutionListener]。请指定自定义侦听器类或创建默认侦听器类