当前位置: 首页 > 面试题库 >

使用Spring IoC和JavaConfig配置AspectJ方面?

翁阳曜
2023-03-14
问题内容

根据Spring的使用Spring
IoC配置AspectJ方面
的文档,以便为Spring
html" target="_blank">IOC配置方面,必须在xml配置中添加以下内容:

<bean id="profiler" class="com.xyz.profiler.Profiler"
      factory-method="aspectOf">
  <property name="profilingStrategy" ref="jamonProfilingStrategy"/>
</bean>

正如@SotiriosDelimanolis所建议的那样,应在JavaConfig中将其重写为以下内容:

@Bean
public com.xyz.profiler.Profiler profiler() {
    com.xyz.profiler.Profiler profiler = com.xyz.profiler.Profiler.aspectOf();
    profiler.setProfilingStrategy(jamonProfilingStrategy()); // assuming you have a corresponding @Bean method for that bean
    return profiler;
}

但是,这仅Profiler在以本机AspectJ
.aj语法编写方面时才起作用。如果它是用Java编写并带有注释的@Aspect,则会收到以下错误消息:

未为Profiler类型定义方法AspectOf()

对于使用@AspectJ语法编写的方面,是否有等效的方式使用JavaConfig编写此代码?


问题答案:

事实证明,有一个org.aspectj.lang.Aspects专门为此目的提供的类。看来该aspectOf()方法是由LTW添加的,这就是为什么它在XML配置中可以正常工作,而不是在编译时起作用的原因。

要解决此限制,请org.aspectj.lang.Aspects提供一种aspectOf()方法:

@Bean
public com.xyz.profiler.Profiler profiler() {
    com.xyz.profiler.Profiler profiler = Aspects.aspectOf(com.xyz.profiler.Profiler.class);
    profiler.setProfilingStrategy(jamonProfilingStrategy()); // assuming you have a corresponding @Bean method for that bean
    return profiler;
}

希望这对以后的人有所帮助。



 类似资料:
  • 我正在使用Spring 3.1.1版的应用程序中工作,现在我需要为其添加一些方面。这些方面是用aspectj语言编写的,没有注释。我已经阅读了Spring docs第8.8章,但我正在努力使其工作。 我的spring配置如下所示: 在我的pom中,是一个Maven项目,我有spring aop、aspectjrt和aspectjweaver作为依赖项。 我的问题是,当启动应用程序时,我得到了一个

  • 问题内容: 我想在Gradle项目中使用AspectJ(这不是Android项目,只是一个简单的Java应用程序)。 这是我的build.gradle的样子: 代码可以编译,但是该方面似乎没有被编织。有什么事吗 问题答案: 我已经为此苦苦挣扎了一段时间,所以这个配置我使用并且效果很好。 在您的配置中执行此操作。 在依赖项中,使用以下配置。如果您不使用spring fwk,则不需要Spring依赖项

  • 这是一个已知的问题,因为Spring AOP使用的是基于代理的方法,该方法不会“看到”同一个类中的内部调用。显然我可以通过使用AspectJ而不是Spring AOP来解决这种情况。如果我没有理解错的话,它可以从Spring内部进行配置。从我的发现来看,我应该包含注释来配置Spring使用AspectJ而不是自己的AOP。不幸的是,这没有帮助,在添加注释之后,没有发生对被注释的方法的拦截。 Spr

  • 然后,为了在中调度作业,我使用了: 此外,为了实际执行,我让它像这样工作: 如上所述,所有这些过去在使用XML-配置时都能正常工作。 现在,使用java-config时,在失败 对于java-configuration,我设置,如下所示: 如何使用java-config在中插入对的引用?

  • 我们试图将AspectJ实现到现有软件中,以便在进行服务调用后执行一些代码。 注: null 删除了批注,该批注可以正确地自动连接所有内容,但我们的@Aspect从未被调用。 通过声明在批注中添加了CGLIB支持,但无效。 我们尝试直接从Spring中遵循以下文档:@EnableAspectJAutoproxy Javadoc 这似乎是AspectJ处理自动连线依赖关系的代理机制的一个问题。 为什

  • 目录结构 1.Book,java 2.aop:BookProxy.java bean2.xml 1.在容器中注册两个组件 2.配置aop 1.切入点 2.切面 切入点为需要增强的方法 切面为增强的方向,是前方还是后方还是环绕还是异常还是返回 test 结果为在开始增强。