public class DefaultIntroductionAdvisor extends Object implements IntroductionAdvisor, ClassFilter, Ordered, Serializable
IntroductionAdvisor
implementation
that by default applies to any class.EMPTY_ADVICE
TRUE
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor and Description |
---|
DefaultIntroductionAdvisor(Advice advice)
Create a DefaultIntroductionAdvisor for the given advice.
|
DefaultIntroductionAdvisor(Advice advice,
IntroductionInfo introductionInfo)
Create a DefaultIntroductionAdvisor for the given advice.
|
DefaultIntroductionAdvisor(DynamicIntroductionAdvice advice,
Class<?> ifc)
Create a DefaultIntroductionAdvisor for the given advice.
|
Modifier and Type | Method and Description |
---|---|
void |
addInterface(Class<?> ifc)
Add the specified interface to the list of interfaces to introduce.
|
boolean |
equals(Object other) |
Advice |
getAdvice()
Return the advice part of this aspect.
|
ClassFilter |
getClassFilter()
Return the filter determining which target classes this introduction
should apply to.
|
Class<?>[] |
getInterfaces()
Return the additional interfaces introduced by this Advisor or Advice.
|
int |
getOrder()
Get the order value of this object.
|
int |
hashCode() |
boolean |
isPerInstance()
Return whether this advice is associated with a particular instance
(for example, creating a mixin) or shared with all instances of
the advised class obtained from the same Spring bean factory.
|
boolean |
matches(Class<?> clazz)
Should the pointcut apply to the given interface or target class?
|
void |
setOrder(int order) |
String |
toString() |
void |
validateInterfaces()
Can the advised interfaces be implemented by the introduction advice?
Invoked before adding an IntroductionAdvisor.
|
public DefaultIntroductionAdvisor(Advice advice)
advice
- the Advice to apply (may implement the
IntroductionInfo
interface)addInterface(java.lang.Class<?>)
public DefaultIntroductionAdvisor(Advice advice, @Nullable IntroductionInfo introductionInfo)
advice
- the Advice to applyintroductionInfo
- the IntroductionInfo that describes
the interface to introduce (may be null
)public DefaultIntroductionAdvisor(DynamicIntroductionAdvice advice, Class<?> ifc)
advice
- the Advice to applyifc
- the interface to introducepublic void addInterface(Class<?> ifc)
ifc
- the interface to introducepublic Class<?>[] getInterfaces()
IntroductionInfo
getInterfaces
in interface IntroductionInfo
public void validateInterfaces() throws IllegalArgumentException
IntroductionAdvisor
validateInterfaces
in interface IntroductionAdvisor
IllegalArgumentException
- if the advised interfaces can't be
implemented by the introduction advicepublic void setOrder(int order)
public int getOrder()
Ordered
Higher values are interpreted as lower priority. As a consequence,
the object with the lowest value has the highest priority (somewhat
analogous to Servlet load-on-startup
values).
Same order values will result in arbitrary sort positions for the affected objects.
getOrder
in interface Ordered
Ordered.HIGHEST_PRECEDENCE
,
Ordered.LOWEST_PRECEDENCE
public Advice getAdvice()
Advisor
getAdvice
in interface Advisor
MethodInterceptor
,
BeforeAdvice
,
ThrowsAdvice
,
AfterReturningAdvice
public boolean isPerInstance()
Advisor
Note that this method is not currently used by the framework.
Typical Advisor implementations always return true
.
Use singleton/prototype bean definitions or appropriate programmatic
proxy creation to ensure that Advisors have the correct lifecycle model.
isPerInstance
in interface Advisor
public ClassFilter getClassFilter()
IntroductionAdvisor
This represents the class part of a pointcut. Note that method matching doesn't make sense to introductions.
getClassFilter
in interface IntroductionAdvisor
public boolean matches(Class<?> clazz)
ClassFilter
matches
in interface ClassFilter
clazz
- the candidate target class