public abstract class AbstractAdvisingBeanPostProcessor extends ProxyProcessorSupport implements BeanPostProcessor
修飾子と型 | フィールドと説明 |
---|---|
protected Advisor | advisor |
protected boolean | beforeExistingAdvisors |
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
AbstractAdvisingBeanPostProcessor() |
修飾子と型 | メソッドと説明 |
---|---|
protected void | customizeProxyFactory(ProxyFactory proxyFactory) サブクラスは、これを実装することを選択できます。たとえば、公開されているインターフェースを変更するためです。 |
protected boolean | isEligible(ClassSE<?> targetClass) 指定されたクラスが、このポストプロセッサーの Advisor でアドバイスする資格があるかどうかを確認します。 |
protected boolean | isEligible(ObjectSE bean, StringSE beanName) 指定された Bean が、このポストプロセッサーの Advisor でアドバイスする資格があるかどうかを確認します。 |
ObjectSE | postProcessAfterInitialization(ObjectSE bean, StringSE beanName) Bean 初期化コールバック(InitializingBean の afterPropertiesSet またはカスタム init メソッドなど)の後に、指定された新しい Bean インスタンスにこの BeanPostProcessor を適用します。 |
ObjectSE | postProcessBeforeInitialization(ObjectSE bean, StringSE beanName) Bean 初期化コールバック(InitializingBean の afterPropertiesSet またはカスタム init メソッドなど)の前に、この BeanPostProcessor を指定された新しい Bean インスタンスに適用します。 |
protected ProxyFactory | prepareProxyFactory(ObjectSE bean, StringSE beanName) 指定された Bean の ProxyFactory を準備します。 |
void | setBeforeExistingAdvisors(boolean beforeExistingAdvisors) 事前にアドバイスされたオブジェクトに遭遇したときに、このポストプロセッサーのアドバイザーが既存のアドバイザーの前に適用されることになっているかどうかを設定します。 |
evaluateProxyInterfaces, getOrder, getProxyClassLoader, isConfigurationCallbackInterface, isInternalLanguageInterface, setBeanClassLoader, setOrder, setProxyClassLoader
copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass, toString
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
public void setBeforeExistingAdvisors(boolean beforeExistingAdvisors)
デフォルトは "false" で、既存のアドバイザーの後に、つまりターゲットメソッドに可能な限り近いところにアドバイザーを適用します。このポストプロセッサーのアドバイザーが既存のアドバイザーもラップするようにするには、これを "true" に切り替えます。
メモ: 具体的なポストプロセッサーの javadoc をチェックして、アドバイザーの性質に応じて、デフォルトでこのフラグが変更されるかどうかを確認します。
public ObjectSE postProcessBeforeInitialization(ObjectSE bean, StringSE beanName)
BeanPostProcessor
afterPropertiesSet
またはカスタム init メソッドなど)の前に、この BeanPostProcessor を指定された新しい Bean インスタンスに適用します。Bean にはすでにプロパティ値が入力されています。返された Bean インスタンスは、元のラッパーの可能性があります。 デフォルトの実装は、指定された bean
をそのまま返します。
BeanPostProcessor
の postProcessBeforeInitialization
bean
- 新しい Bean インスタンス beanName
- Bean の名前 null
の場合、後続の BeanPostProcessors は呼び出されません InitializingBean.afterPropertiesSet()
public ObjectSE postProcessAfterInitialization(ObjectSE bean, StringSE beanName)
BeanPostProcessor
afterPropertiesSet
またはカスタム init メソッドなど)の後に、指定された新しい Bean インスタンスにこの BeanPostProcessor を適用します。Bean にはすでにプロパティ値が入力されています。返された Bean インスタンスは、元のラッパーの可能性があります。FactoryBean の場合、このコールバックは、FactoryBean インスタンスと、FactoryBean によって作成されたオブジェクト(Spring 2.0 以降)の両方に対して呼び出されます。ポストプロセッサーは、対応する bean instanceof FactoryBean
チェックを介して、FactoryBean または作成されたオブジェクトのいずれか、あるいはその両方に適用するかどうかを決定できます。
このコールバックは、他のすべての BeanPostProcessor コールバックとは対照的に、InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(java.lang.Class<?>, java.lang.String)
メソッドによってトリガーされた短絡後にも呼び出されます。
デフォルトの実装は、指定された bean
をそのまま返します。
BeanPostProcessor
の postProcessAfterInitialization
bean
- 新しい Bean インスタンス beanName
- Bean の名前 null
の場合、後続の BeanPostProcessors は呼び出されません InitializingBean.afterPropertiesSet()
, FactoryBean
protected boolean isEligible(ObjectSE bean, StringSE beanName)
Advisor
でアドバイスする資格があるかどうかを確認します。 ターゲットクラスチェックのための isEligible(Class)
へのデリゲート。オーバーライドできます。特定の Bean を名前で明確に除外します。
メモ: 通常の Bean インスタンスに対してのみ呼び出されますが、Advised
を実装し、ローカル Advisor
を既存のプロキシの Advisor
チェーンに追加できる既存のプロキシインスタンスに対しては呼び出されません。後者の場合、isEligible(Class)
は直接呼び出され、実際のターゲットクラスは既存のプロキシの背後にあります(AopUtils.getTargetClass(Object)
によって決定されます)。
bean
- Bean インスタンス beanName
- Bean の名前 isEligible(Class)
protected boolean isEligible(ClassSE<?> targetClass)
Advisor
でアドバイスする資格があるかどうかを確認します。Bean ターゲットクラスごとに canApply
結果のキャッシュを実装します。
targetClass
- チェックするクラス AopUtils.canApply(Advisor, Class)
protected ProxyFactory prepareProxyFactory(ObjectSE bean, StringSE beanName)
ProxyFactory
を準備します。 サブクラスは、ターゲットインスタンスの処理、特にターゲットクラスの公開をカスタマイズできます。非ターゲットクラスのプロキシと構成済みのアドバイザーのインターフェースのデフォルトのイントロスペクションは後で適用されます。customizeProxyFactory(org.springframework.aop.framework.ProxyFactory)
では、プロキシを作成する直前に、これらのパーツを後でカスタマイズすることができます。
bean
- プロキシを作成する Bean インスタンス beanName
- 対応する Bean 名 ProxyConfig
設定と指定された Bean で初期化された ProxyFactorycustomizeProxyFactory(org.springframework.aop.framework.ProxyFactory)
protected void customizeProxyFactory(ProxyFactory proxyFactory)
デフォルトの実装は空です。
proxyFactory
- ターゲット、アドバイザー、インターフェースですでに構成されており、このメソッドが戻った直後にプロキシを作成するために使用される ProxyFactoryprepareProxyFactory(java.lang.Object, java.lang.String)