ケース4:
パッケージaccelerate1.LifeCycle; インポートorg.springframework.context.SmartLifecycle; インポートorg.springframework.stereotype.Component; @Component パブリック クラス MyLifeCycle 実装SmartLifecycle { ブールのフラグ= falseに; @Override / ** * isAutoStartupの戻り値は、自動的に実行するかどうかを示しますコールバックメソッド、真である。偽号 *スプリングデフォルトを手動で実行されるため、ライフサイクル・インターフェースは、手動でも行うことができます。 * / パブリック ブールisAutoStartup(){ リターン trueに; } @Override / ** *このメソッドは、stopメソッドのライフサイクルを呼び出すために使用されます * / 公共 ボイドストップ(Runnableをコールバック){ するSystem.out.println( "stopメソッドの実行内容" ); callback.run(); // callback.run手段が直ちに停止する } @Override 公共 ボイド開始(){ でフラグ = trueに、 System.out.println(「コンテンツの方法を実行開始」); } @Override 公共 ボイドSTOP(){ } @Override / ** *場合メソッドが戻るときに方法を開始する偽isRunningが呼び出され isRunningとき*メソッドが値を返します真の呼び出しは、メソッドを停止するとき * / パブリック ブール(){isRunning 復帰フラグにし; } @Override / ** *ライフサイクルは、優先度を実行するために設けられた:小さい値より高い優先順位を。 * / パブリック INT getPhase(){ 戻り 0 ; } }
パッケージ; accelerate1.test インポートaccelerate1.app.AppConfig; インポートorg.springframework.context.annotation.AnnotationConfigApplicationContext、 パブリック クラスDEMO1 { 公共 静的 ボイドメイン(文字列[]引数){ AnnotationConfigApplicationContext AnnotationConfigApplicationContext = 新しい新しい AnnotationConfigApplicationContext(のAppConfig。クラス); / ** これはテストですので、メインスレッドが停止にアプリケーションを終了し、方法を聞いて停止しません。 * Webプロジェクトは、Tomcat Webコンテナおよび他の方法が停止するコールバックすることができ、停止しました。 * * / AnnotationConfigApplicationContext.stop(); } }
業績:
ケース5:
パッケージaccelerate1.FactoryBeanを。 パブリック クラスビング{ パブリックビング(){ System.out.printlnは( "-----ビング-------" )。 } }
パッケージaccelerate1.FactoryBeanを。 輸入org.springframework.beans.factory.FactoryBean; 輸入org.springframework.stereotype.Component; @Component パブリック クラス MyFactoryBean 実装FactoryBeanの{ @Override パブリックオブジェクトのgetObject()がスロー例外{ 戻り 新しいビングを()。 } @Override 公共 <?>クラスgetObjectType(){ 戻り ヌル。 } }
パッケージaccelerate1.test; 輸入accelerate1.app.AppConfig; 輸入org.springframework.context.annotation.AnnotationConfigApplicationContext; パブリック クラスDEMO1 { 公共 静的 ボイドメイン(文字列[]引数){ AnnotationConfigApplicationContext annotationConfigApplicationContext = 新しい AnnotationConfigApplicationContext(のAppConfig。クラス)。 System.out.println(annotationConfigApplicationContext.getBean( "myFactoryBean" )); } }
業績:
春の春は、第三者がケースは、そのうちの一つである3つの方法がありますオブジェクトを管理します。
1. @Beanコメント。
2.のSpring Beanのうちに戻る必要がありますFactoryBeanのインタフェースのgetObjectメソッドを実装します。
3. AnnotationConfigApplicationContextは、APIを通じて達成しました。以下のコードをスキャンする前にパケットを追加しました。
。annotationConfigApplicationContext.getBeanFactory()registerSingleton( "ビング"、新ビング());
ケース6:
パッケージaccelerate1.ann; 輸入java.lang.annotation.ElementType; 輸入java.lang.annotation.Retention。 輸入java.lang.annotation.RetentionPolicy; 輸入java.lang.annotation.Target; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) パブリック @ インタフェースAcceleate { }
パッケージaccelerate1.FactoryBeanを。 輸入accelerate1.ann.Acceleate。 @Acceleate パブリック クラスビング{ パブリックビング(){ System.out.printlnは( "-----ビング-------" )。 } }
パッケージaccelerate1.scanner。 輸入org.springframework.beans.factory.support.BeanDefinitionRegistry; 輸入org.springframework.context.annotation.ClassPathBeanDefinitionScanner; 輸入org.springframework.core.type.filter.TypeFilter; パブリック クラス MyScannerは延びClassPathBeanDefinitionScanner { 公共MyScanner(BeanDefinitionRegistryレジストリ){ スーパー(レジストリ)。 } @Override 公共 ボイドaddIncludeFilter(のtypeFilter includeFilter){ スーパー.addIncludeFilter(includeFilter)。 } }
パッケージaccelerate1.test; 輸入accelerate1.FactoryBean.Bing。 輸入accelerate1.ann.Acceleate。 輸入accelerate1.app.AppConfig; 輸入accelerate1.scanner.MyScanner。 輸入org.springframework.context.annotation.AnnotationConfigApplicationContext; 輸入org.springframework.core.type.filter.AnnotationTypeFilter; パブリック クラスDemo3 { 公共 静的 ボイドメイン(文字列[]引数){ AnnotationConfigApplicationContext annotationConfigApplicationContext = 新しいAnnotationConfigApplicationContext()。 / ** *春に独自のメモを設定して、あなた自身のメモを追加することができますので、読んで 自分の春の豆を達成させます*。 * / MyScanner MyScannerです = 新新MyScanner(AnnotationConfigApplicationContext)である。 myScanner.addIncludeFilter(新新 AnnotationTypeFilter(Acceleate。クラス)); myScanner.scan( "accelerate1" ); annotationConfigApplicationContext.register(のAppConfigの。クラス); annotationConfigApplicationContext.refresh(); システム。 out.printlnを(annotationConfigApplicationContext.getBean(ビング。クラス)); } }
結果:
オリジナルの説明:上記の作られたものは、中includeFiltersに自分のメモを書くことです。下記に示すように、