詳細なSpringBean

転載:https://blog.csdn.net/suannai11/article/details/87898317

1. Spring Beanとは何ですか?

私の個人的な理解では、Beanは、特定の機能を実装するために使用されるコンポーネント定義することと同等です。ここで定義されているBeanは、このコンポーネントを呼び出して、完了したい機能実現するための簡潔で便利な方法を提供することと同じです。

  • Javaはオブジェクト指向です。オブジェクトにはメソッドとプロパティがあるため、メソッドとプロパティを呼び出すにはオブジェクトインスタンスが必要です(つまり、インスタンス化)。
  • これらのメソッドとプロパティを具体的な方法で使用できるように、メソッドまたはプロパティを持つすべてのクラスをインスタンス化する必要があります。
  • 法則:すべてのサブクラスとメソッドまたはプロパティを持つクラスは、Spring IoCに登録されたBeanアノテーションを付ける必要があります;(
    @ Component、@ Repository、@ Controller、@ Service、@ Configration)
  • Beanをクラスのプロキシまたはスポークスパーソンとして理解し(実際には、リフレクションとプロキシによって実現されます)、Beanが必要なものを備えたクラスを表すことができるようにします。
  • 私たちは皆Weibo @ 17某某にいます。相手は最初にこの情報を見てフィードバックを提供します。次にSpringで@記号をマークすると、Springが来て見て、ここから1つ取得します。Bean(登録)または豆を与える(使用)

2. Beanの使い方は?

私たちの春にとって最も重要なことは、これらの豆で構成される豆工場であり、各豆は機能を実装しています。
例:最初に書いたBean

<bean id="userAction" class="com.neusoft.gmsbs.gms.user.action.UserAction"
scope="prototype">
<property name="userBO" ref="userBO" />
</bean>

idは、Beanのエイリアスを定義することと同じです。必要な場合は、エイリアスを関連付ける必要があります。これは、次のようになります。userActionにuserBO関数を実装する必要があります。Setinjectioninactionに関連付けます。に使える!これは、オブジェクトのプロパティに値を設定することと同じです。refは、コンテナ内に作成されたオブジェクトを参照します
ここに画像の説明を挿入

その他の属性については、以下を参照してください
。Id:Beanの名前を識別し、factory.getBean( "id")を介してインスタンスを取得します。
クラス:Beanのクラスパス。
シングルトン:デフォルトはtrue、つまりシングルインスタンスモードです。getBean( "id")のたびに同じ
インスタンスが取得されます。false 、つまりプロトタイプモードに設定されている
場合、新しく作成されたインスタンスはそれぞれ取得されます。時間

public class Spring {
    
    
    @Test
    public void demo(){
    
    
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
       Person persion1 =  (Person)applicationContext.getBean("person");
       Person persion2 =  (Person)applicationContext.getBean("person");
        System.out.println(persion1);
        System.out.println(persion2);
    }
}

1.属性とメソッドを持つすべてのサブクラスとクラスはSpringでBeansに登録され、管理のためにBeansに渡されます
。2。@ Beanはメソッドで使用され、次のメソッドからBeanを取得できることをSpringコンテナに通知します

3、Bean構成

ID、名前、またはクラス
通常、Beanを転送するときは、Beanの名前としてID属性を指定します
。1。id属性はIOCコンテナ内で一意である必要があります。2。Bean
の名前に特殊文字が含まれている場合は、 name属性
3.classは、クラスのフルパス名を設定するために使用され、主な機能は、iocコンテナによってクラスのインスタンスを生成することです。

Four。Beanのスコープ

ここに画像の説明を挿入

5、Beanのライフサイクル

従来のJavaアプリケーションでは、Beanのライフサイクルは非常に単純です。Javaキーワードnewを使用してBeanをインスタンス化すると、Beanを使用できます。Beanが使用されなくなると、Javaによって自動的にガベージコレクションされます。

対照的に、Spring Management Beansのライフサイクルははるかに複雑です。SpringのBeansの管理は非常に拡張可能であるため、Beansのライフサイクルを正しく理解することが非常に重要です。以下にBeanの構築プロセスを示します。

ここに画像の説明を挿入
Beansのライフサイクルの詳細な理解
上の図に示されているように、Beansのライフサイクルはまだ比較的複雑です。上の図の各ステップの説明は次のとおりです。

  • SpringはSpringスタートアッププロセスリンクを開始し、Springで管理する必要のあるBeanを見つけてロードし、Beanをインスタンス化します。
  • Beanがインスタンス化された後、Beanの導入と値がBeanの属性に注入されます
  • BeanがBeanNameAwareインターフェースを実装している場合、SpringはBeanのIDをsetBeanName()メソッドに渡します。
  • BeanがBeanFactoryAwareインターフェースを実装している場合、SpringはsetBeanFactory()メソッドを呼び出してBeanFactoryコンテナーインスタンスを渡します。
  • BeanがApplicationContextAwareインターフェースを実装している場合、SpringはBeanのsetApplicationContext()メソッドを呼び出し、Beanが配置されているアプリケーションコンテキスト参照を渡します。
  • BeanがBeanPostProcessorインターフェースを実装している場合、SpringはpostProcessBeforeInitialization()メソッドを呼び出します。
  • BeanがInitializingBeanインターフェースを実装している場合、SpringはafterPropertiesSet()メソッドを呼び出します。同様に、Beanがinit-methodを使用して初期化メソッドを宣言する場合、メソッドも呼び出されます
  • BeanがBeanPostProcessorインターフェースを実装している場合、SpringはpostProcessAfterInitialization()メソッドを呼び出します。
  • この時点で、Beanはアプリケーションで使用できるようになります。それらは、アプリケーションコンテキストが破棄されるまで、アプリケーションコンテキストにとどまります。
  • BeanがDisposableBeanインターフェースを実装している場合、Springはそのdestroy()インターフェースメソッドを呼び出します。同様に、Beanがdestroy-methodを使用してdestroyメソッドを宣言している場合、このメソッドも呼び出されます。

おすすめ

転載: blog.csdn.net/weixin_42754971/article/details/114197231