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, setProxyClassLoadercopyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass, toStringcloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSEpublic void setBeforeExistingAdvisors(boolean beforeExistingAdvisors)
デフォルトは "false" で、既存のアドバイザーの後に、つまりターゲットメソッドに可能な限り近いところにアドバイザーを適用します。このポストプロセッサーのアドバイザーが既存のアドバイザーもラップするようにするには、これを "true" に切り替えます。
メモ: 具体的なポストプロセッサーの javadoc をチェックして、アドバイザーの性質に応じて、デフォルトでこのフラグが変更されるかどうかを確認します。
public ObjectSE postProcessBeforeInitialization(ObjectSE bean, StringSE beanName)
BeanPostProcessorafterPropertiesSet またはカスタム init メソッドなど)の前に、この BeanPostProcessor を指定された新しい Bean インスタンスに適用します。Bean にはすでにプロパティ値が入力されています。返された Bean インスタンスは、元のラッパーの可能性があります。 デフォルトの実装は、指定された bean をそのまま返します。
BeanPostProcessor の postProcessBeforeInitialization bean - 新しい Bean インスタンス beanName - Bean の名前 null の場合、後続の BeanPostProcessors は呼び出されません InitializingBean.afterPropertiesSet()public ObjectSE postProcessAfterInitialization(ObjectSE bean, StringSE beanName)
BeanPostProcessorafterPropertiesSet またはカスタム 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(), FactoryBeanprotected 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)