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

Spring AOP切入“嵌套”注释

赫连骏
2023-03-14
问题内容

我需要定义一个切入点,该切入点触发使用自定义注释注释的spring服务的所有方法的执行。我想定义切入点的注释将在另一个注释上。

@Y
public @interface X {
}

然后该服务将被注释如下

@X
public Service1 {
}

我尝试使用以下切入点定义,但是仅当@Y在服务本身上时才有效,这意味着它看不到注释在@X上

@Around("@within(com.mypackage.Y)")

问题答案:


我在应用程序中有这个确切的需求。我找到了这个答案,但不满意无法完成。

经过更多搜索之后,我发现了用于AspectJ / Spring切入点表达式的备忘单。备忘单中的解决方案无法完全如广告中所述那样工作,但是我能够使其满足我的需要。

@Pointcut("within(@(@Annotation *) *)")
public void classAnnotatedWithNestedAnnotationOneLevelDeep() { }

我将此表达式与一个@within表达式组合在一起,@Annotation以获得想要的工作。

对于方法执行

@Pointcut("execution(@(@com.someorg.SomeAnnotation *) * *(..))")
public void methodAnnotatedWithNestedAnnotationOneLevelDeep() { }

我将此表达式与@annotation仅用于的表达式相结合,@Annotation以获得我想为方法工作的东西。


 类似资料:
  • 我对摩基托并不陌生,但这次我在工作中发现了一个有趣的案例。我希望你能帮我解决这件事。 我需要注入mock来改变测试过程中的某些方法行为。问题是,bean结构是嵌套的,并且这个bean在其他bean内部,不能从test方法访问。我的代码如下所示: 所以在我的测试中,我希望调用nestedDAO.method返回模拟答案。 我尝试执行一个initmocks: 还要在我的测试类上添加注释: 总是从方法获

  • 我需要定义一个切入点,该切入点触发对使用自定义注释注释的spring服务的所有方法的执行。我想要定义切入点的注释将位于其他注释上。 然后该服务将被注释为以下内容 我尝试了以下切入点定义,但它仅在@Y位于服务本身时有效,这意味着它看不到注释位于@X上

  • 我有一个工厂是这样的: 这样的类: 如何正确使用Google Guice来做同样的事情?我尝试了辅助注射,但我不确定如何创建“UrlBuilder”。谁能帮忙?

  • 我有一个相当典型的场景,其中有一个main@实体,他内部的所有内容都是可嵌入的(因此,没有父实体,内部的所有内容都没有意义)。现在JPA 2.0阻止我在另一个@ElementCollection中定义的@Embeddeble中嵌套一个@ElementCollection: JSR-317 2.6可嵌入类和基本类型的集合包含在元素集合中的可嵌入类(包括另一个可嵌入类中的可嵌入类)不得包含元素集合,也

  • 问题内容: 我有一个注入了Facade对象的Jersey资源。这是在我的配置中,并且立面被很好地注入了。外墙包含一个DAO类,该类也应注入并在同一类中配置。现在到我的问题;DAO类为null。因此,不注射。 工厂实例非常简单。他们只是调用构造函数并将参数传递给它。 奇怪的是,当我使用bind(Class object)而不是bindFactory时,这绝对可以正常工作。 编辑 工厂工厂 问题答案:

  • 我想从YAML向Spring上下文注入一些值。YAML的结构类似,因此我不想重复代码,但Spring启动失败,因为它无法将值注入占位符。 请注意我的: 然后我将这些值注入YAML, 然后我将其导入到配置属性上下文: 但是< code > @ Value(" $ { auto agents . supplier } ")不起作用。 请建议。