public class MethodInvokingJobDetailFactoryBean extends ArgumentConvertingMethodInvoker implements FactoryBean<JobDetail>, BeanNameAware, BeanClassLoaderAware, BeanFactoryAware, InitializingBean
JobDetail オブジェクトを公開する FactoryBean。Spring で管理されているターゲット Bean で既存のサービスメソッドを呼び出すだけの 1 行の Quartz ジョブを実装する必要がありません。MethodInvoker 基本クラスから "targetObject" や "targetMethod" などの共通構成プロパティを継承し、"targetBeanName" プロパティを介してターゲット Bean を名前で検索するサポートを追加します ( "targetObject" を直接指定する代わりに、非シングルトンターゲットオブジェクトを許可します)。
"concurrent" プロパティにより、同時に実行されているジョブと現在実行されていないジョブの両方をサポートします。この MethodInvokingJobDetailFactoryBean によって作成されたジョブは、デフォルトで揮発性と耐久性があります(Quartz の用語によると)。
注: JobDetails この FactoryBean 経由で作成、シリアライズして永続的なジョブのストアに適していないではありません。永続的なジョブが特定のサービスメソッドに委譲されるようにする各ケースで、独自の Quartz ジョブをシンラッパーとして実装する必要があります。
Spring 4.1 の時点で、Quartz 2.1.4 以降と互換性があります。
setTargetBeanName(java.lang.String), MethodInvoker.setTargetObject(java.lang.Object), MethodInvoker.setTargetMethod(java.lang.String), setConcurrent(boolean)| 修飾子と型 | クラスと説明 | 
|---|---|
static class  | MethodInvokingJobDetailFactoryBean.MethodInvokingJobQuartz 指定されたメソッドを呼び出すジョブ実装。  | 
static class  | MethodInvokingJobDetailFactoryBean.StatefulMethodInvokingJobStatefulJob インターフェースを実装する MethodInvokingJob の拡張。  | 
targetClassOBJECT_TYPE_ATTRIBUTE| コンストラクターと説明 | 
|---|
MethodInvokingJobDetailFactoryBean() | 
| 修飾子と型 | メソッドと説明 | 
|---|---|
void | afterPropertiesSet() | 
JobDetail | getObject() このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。  | 
ClassSE<? extends JobDetail> | getObjectType() この FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合は  null を返します。 | 
ClassSE<?> | getTargetClass()"targetBeanName" 機能をサポートするためにオーバーライドされます。 | 
ObjectSE | getTargetObject()"targetBeanName" 機能をサポートするためにオーバーライドされます。 | 
boolean | isSingleton() このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、 FactoryBean.getObject() は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?  | 
protected void | postProcessJobDetail(JobDetail jobDetail) この FactoryBean によって公開される JobDetail を後処理するためのコールバック。  | 
protected ClassSE<?> | resolveClassName(StringSE className) 指定されたクラス名をクラスに解決します。  | 
void | setBeanClassLoader(ClassLoaderSE classLoader)Bean  class loaderSE を Bean インスタンスに提供するコールバック。 | 
void | setBeanFactory(BeanFactory beanFactory) 所有ファクトリを Bean インスタンスに提供するコールバック。  | 
void | setBeanName(StringSE beanName) この Bean を作成した Bean ファクトリで Bean の名前を設定します。  | 
void | setConcurrent(boolean concurrent) 複数のジョブを同時に実行するかどうかを指定します。  | 
void | setGroup(StringSE group) ジョブのグループを設定します。  | 
void | setName(StringSE name) ジョブの名前を設定します。  | 
void | setTargetBeanName(StringSE targetBeanName)Spring BeanFactory でターゲット Bean の名前を設定します。  | 
doFindMatchingMethod, findMatchingMethod, getDefaultTypeConverter, getTypeConverter, registerCustomEditor, setTypeConvertergetArguments, getPreparedMethod, getTargetMethod, getTypeDifferenceWeight, invoke, isPrepared, prepare, setArguments, setStaticMethod, setTargetClass, setTargetMethod, setTargetObjectcloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic void setName(StringSE name)
デフォルトは、この FactoryBean の Bean 名です。
public void setGroup(StringSE group)
デフォルトは、スケジューラのデフォルトグループです。
public void setConcurrent(boolean concurrent)
@PersistJobDataAfterExecution および @DisallowConcurrentExecution マーカーを追加することで実現されます。ステートフルジョブとステートレスジョブの詳細については、こちらを参照してください。デフォルト設定では、ジョブを同時に実行します。
public void setTargetBeanName(StringSE targetBeanName)
 これは、"targetObject" を指定する代わりに、非シングルトン Bean を呼び出すことを可能にするものです。指定された "targetObject" および "targetClass" の値は、この "targetBeanName" 設定の対応する効果を上書きすることに注意してください (つまり、Bean 型または Bean オブジェクトを静的に事前定義します)。
public void setBeanName(StringSE beanName)
BeanNameAware 通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet() またはカスタム init メソッドなどの init コールバックの前に呼び出されます。
BeanNameAware の setBeanName beanName - ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String) メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。public void setBeanClassLoader(ClassLoaderSE classLoader)
BeanClassLoaderAwareclass loaderSE を Bean インスタンスに提供するコールバック。 通常の Bean プロパティの設定後、ただし InitializingBean's InitializingBean.afterPropertiesSet() メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanClassLoaderAware の setBeanClassLoader classLoader - 所有クラスローダー public void setBeanFactory(BeanFactory beanFactory)
BeanFactoryAware 通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet() またはカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanFactoryAware の setBeanFactory beanFactory - 所有 BeanFactory(非 null)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。BeanInitializationExceptionprotected ClassSE<?> resolveClassName(StringSE className) throws ClassNotFoundExceptionSE
MethodInvoker デフォルトの実装では、スレッドコンテキストクラスローダーを使用して ClassUtils.forName を使用します。
MethodInvoker の resolveClassName className - 解決するクラス名 ClassNotFoundExceptionSE - クラス名が無効だった場合 public void afterPropertiesSet()
                        throws ClassNotFoundExceptionSE,
                               NoSuchMethodExceptionSEInitializingBeanBeanFactoryAware、ApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean の afterPropertiesSet ClassNotFoundExceptionSENoSuchMethodExceptionSEprotected void postProcessJobDetail(JobDetail jobDetail)
デフォルトの実装は空です。サブクラスでオーバーライドできます。
jobDetail - この FactoryBean によって準備された JobDetailpublic ClassSE<?> getTargetClass()
"targetBeanName" 機能をサポートするためにオーバーライドされます。MethodInvoker の getTargetClass public ObjectSE getTargetObject()
"targetBeanName" 機能をサポートするためにオーバーライドされます。MethodInvoker の getTargetObject @Nullable public JobDetail getObject()
FactoryBeanBeanFactory と同様に、これにより、シングルトンとプロトタイプの両方のデザインパターンをサポートできます。
 この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する FactoryBeanNotInitializedException をスローします。
Spring 2.0 以降、FactoryBeans は null オブジェクトを返すことができます。ファクトリはこれを通常の値として使用します。この場合、FactoryBeanNotInitializedException はスローされません。FactoryBean の実装では、必要に応じて FactoryBeanNotInitializedException 自体をすぐにスローすることをお勧めします。
FactoryBean<JobDetail> の getObject null にすることができます)FactoryBeanNotInitializedExceptionpublic ClassSE<? extends JobDetail> getObjectType()
FactoryBeannull を返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成している実装の場合、このメソッドはシングルトンの作成を可能な限り回避しようとします。むしろ、事前に型を推定する必要があります。プロトタイプの場合、ここで意味のある型を返すこともお勧めします。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
 注意 : オートワイヤーは、ここで null を返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。
FactoryBean<JobDetail> の getObjectType null ListableBeanFactory.getBeansOfType(java.lang.Class<T>)public boolean isSingleton()
FactoryBeanFactoryBean.getObject() は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?  注意 : FactoryBean がシングルトンオブジェクトを保持することを示す場合、getObject() から返されたオブジェクトは所有 BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、true を返さないでください。
FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。
 注意 : false を返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張 SmartFactoryBean インターフェースの実装は、SmartFactoryBean.isPrototype() メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンな FactoryBean 実装は、isSingleton() 実装が false を返す場合、常に独立したインスタンスを返すと単純に想定されます。
FactoryBean は通常シングルトンインスタンスを管理するため、デフォルトの実装では true が返されます。
FactoryBean<JobDetail> の isSingleton FactoryBean.getObject(), SmartFactoryBean.isPrototype()