Skip to content

Commit

Permalink
Remove @aspect for classes containing only @pointcut declarations in …
Browse files Browse the repository at this point in the history
…ref docs

Closes gh-30790
  • Loading branch information
sbrannen committed Jul 1, 2023
1 parent 3c05679 commit 040ea0a
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 17 deletions.
Expand Up @@ -154,7 +154,6 @@ Java::
----
package com.xyz;
@Aspect
public class Pointcuts {
@Pointcut("execution(public * *(..))")
Expand All @@ -179,7 +178,6 @@ Kotlin::
----
package com.xyz
@Aspect
class Pointcuts {
@Pointcut("execution(public * *(..))")
Expand Down Expand Up @@ -211,9 +209,9 @@ pointcut matching.

When working with enterprise applications, developers often have the need to refer to
modules of the application and particular sets of operations from within several aspects.
We recommend defining a dedicated aspect that captures commonly used _named pointcut_
expressions for this purpose. Such an aspect typically resembles the following
`CommonPointcuts` example (though what you name the aspect is up to you):
We recommend defining a dedicated class that captures commonly used _named pointcut_
expressions for this purpose. Such a class typically resembles the following
`CommonPointcuts` example (though what you name the class is up to you):

[tabs]
======
Expand All @@ -223,10 +221,8 @@ Java::
----
package com.xyz;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class CommonPointcuts {
/**
Expand Down Expand Up @@ -287,10 +283,8 @@ Kotlin::
----
package com.xyz
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.Pointcut
@Aspect
class CommonPointcuts {
/**
Expand Down Expand Up @@ -346,9 +340,9 @@ Kotlin::
----
======

You can refer to the pointcuts defined in such an aspect anywhere you need a pointcut
expression by referencing the fully-qualified name of the `@Aspect` class combined with
the `@Pointcut` method's name. For example, to make the service layer transactional, you
You can refer to the pointcuts defined in such a class anywhere you need a pointcut
expression by referencing the fully-qualified name of the class combined with the
`@Pointcut` method's name. For example, to make the service layer transactional, you
could write the following which references the
`com.xyz.CommonPointcuts.businessService()` _named pointcut_:

Expand Down
Expand Up @@ -637,17 +637,20 @@ public int getOrder() {
}


static class CommonPointcuts {

@Pointcut("execution(* getAge())")
void getAge() {
}
}

@Aspect
static class NamedPointcutAspectWithFQN {

@SuppressWarnings("unused")
private ITestBean fieldThatShouldBeIgnoredBySpringAtAspectJProcessing = new TestBean();

@Pointcut("execution(* getAge())")
void getAge() {
}

@Around("org.springframework.aop.aspectj.annotation.AbstractAspectJAdvisorFactoryTests.NamedPointcutAspectWithFQN.getAge()")
@Around("org.springframework.aop.aspectj.annotation.AbstractAspectJAdvisorFactoryTests.CommonPointcuts.getAge()()")
int changeReturnValue(ProceedingJoinPoint pjp) {
return -1;
}
Expand Down

0 comments on commit 040ea0a

Please sign in to comment.