Spring Note 3-HelloSpring、Context、IOCコンテナ、Beanを続行

第2章をまだ読んでいない場合は、振り返ることをお勧めします。_
Spring note 2-最初のSpringプロジェクトHelloSpring、強調表示されていないテンプレートjavaを解決します。
前の章では、Spring構成の終了を完了しました。今回は、Springについて本当に理解し始めています。

その前に、公式文書を開いて春の構成を確認します

ここに画像の説明を挿入
この写真はまだ非常に重要です(doge公式オリジナル写真)

1.コンテキストの理解

私たちは一般的にSpringContextをSpringコンテキスト、つまりSpringサポート環境と呼び、いくつかのパラメーター要求やパブリックオブジェクトの解決などを担当します。あなたはそれを大きな工場と考えることができ、私たちが必要とする生産のための基本的な準備をしています

2. IOCコンテナ(制御の反転の理解)

これは当局者が言ったことです(理解できません)

この章では、Springの制御の反転(IoC)コンテナについて説明します。

IOCは、インスタンスオブジェクトを格納するためのコンテナであり、コンテナです。IOCのおかげで、プログラムはオブジェクトを受動的に受け入れ始めます(過去にクラスを作成したときは、プログラム自体を介していたと言うのはなぜですか)。 。新しい新しい新しい)このように書いた場合、上級プログラマーが書いたものであれば問題ないかもしれませんが、ほとんどの人はまだ初期段階で開発能力が低いかもしれません(Tucao私はそれを自分で使用しています)、そしてそれを自分で書くコード、ここは新しいはずです、新しいものがあります、ある日、ユーザーがあなたとそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうなどそして、そうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそうそう彼らがビジネスを変えたいと思うなら、あなたはあなたの「風」を見る「打撃」コード、変更するのは難しすぎるまさか、コード結合は無意識のうちに非常に高いです。
だからあなたはこのいまいましい顧客に憤慨し始め、あなたを再び忙しくさせます!
次に、この恥ずかしさと混乱を取り除くために、開発にいくつかの開発モデル(ファクトリモデルなど)を追加する方法がありますが、いわゆるIOCが手元にあるため、Springを学習しています。
IOCの制御の反転は、プログラムが変更を受動的に受け入れる一方で、コードをインスタンス化してビジネスを変更するイニシアチブを顧客に与えることです。

3、Bean

豆、あなたはそれをこのように理解します。各Beanはオブジェクトですが、各Beanが参照するオブジェクトは同じです。つまり、参照するオブジェクトのHashCodeは同じです。これについては、後で説明します。

最初にアノテーション開発を学ぶ友人もいるかもしれませんが、Springと関連知識をよりよく理解するために、まずSpring構成ファイルから始めて、次にアノテーションについて説明します(2点比較、補完学習)

4.実際の戦闘

最初はアノテーション開発を使用するつもりはありませんでした。最初に開発にSpring構成ファイルを使用します
(1)javaのresourcesフォルダーを見つけbeans.xmlファイルを作成します(名前は関係ありません。取得するだけです)。 )
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

xmlのデフォルトの構成情報をインポートする必要があります

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

次のランダムな点は(強迫性障害)である可能性があります。com.spring.study
ここに画像の説明を挿入
という名前の青いJavaの下にパッケージを作成し、このパッケージの下にHelloクラスを作成して、次のコードを記述します。

ここに画像の説明を挿入

package com.spring.study;

// 这只是一个镇压这个类所有警告的注解
@SuppressWarnings("all")
public class Hello {
    
    

    public String name;

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }
}

次のコードをbeans.xmlファイルに追加すると、beanタグ渡して、必要なクラスをインスタンス化します。

ここに画像の説明を挿入

<bean id="myHello" class="com.spring.study.Hello">
    <property name="name" value="HelloYSJ"/>
</bean>

このラベルについて詳しく説明しましょう。

1、:各Beanタグは、新しい(インスタンス化された)操作
2と同等ですid:コード各Beanによって作成されたオブジェクトに一意の識別子を割り当てます。これは、オブジェクト
3を作成したときのオブジェクトの名前に相当しますクラス:Beanがインスタンス化するクラスのフルパス
4。プロパティ:各プロパティは、idオブジェクトのプロパティを変更することを表します。このタグはBean5にのみ埋め込むことができることに注意してください
名前:このID6を表すクラスメンバー属性の名前
:この5番目の(つまり)メンバーに割り当てる値を表します(Beanのidオブジェクトを参照する場合は、valueではなくrefに変更する必要があることに注意してください。それ以外の場合はvalueを使用してください)

次に、
テストクラスを作成します。テンプレートの緑色のJavaでテストクラスを作成します。名前をtestまたはTestと呼ぶことはできません。myTestを取得できます。
ここに画像の説明を挿入
すべてのBeanはxmlで構成されているため、使用できるのはxmlのみです。ファイル。来て、それを手に入れました

1.コードの最初の行は、コンテキストを介してIOCコンテナーを取得することと同等であり、コンテキストは取得されたIOCコンテナーです(ApplicationContextが公式に推奨されます
。2。コードの2行目は、getBeanメソッドを介してIOCコンテナーからインスタンス化されます。オブジェクトID3
。出力検出
ここに画像の説明を挿入

ちなみに、非常に深いApplicationContextクラスの継承を投稿してください。
ここに画像の説明を挿入

たぶん誰かがここで尋ねるでしょう、name属性はどのように割り当てられますか?

ここに画像の説明を挿入
1番目と2番目の場所に葉の形のマークがあることがわかります。
最初の緑の葉は次のことを表しています。このクラスはSpringによって管理されています。Springは2番目の黄色の葉の代表をインスタンス化するのに役立ちます
。このクラスはこのメソッドを使用します。属性への値


最初のリーフは、Beanタグがこのクラスをインポートしたことを示しています。Beanはこのクラスをどのようにインスタンス化しますか?コンストラクター、リフレクション?(関心のあるパートナーは自分でテストできます。これについては次のセクションで説明します。)
2番目のリーフは、name属性がこのメソッドを介して注入されることを意味します。メソッド名は固定されていますか?、この方法なしで注入を完了することはできますか?ちょっとテストしてみましょう

テスト

テスト1:setNameメソッドの名前を変更します。
ここに画像の説明を挿入
問題が見つかりましたこれは、メソッド名がsetNameとして固定されていることを意味します。

プロパティがxxxxと呼ばれる場合、挿入されたメソッドの名前はsetXxxと呼ばれる必要があります(プロパティ名の最初の文字は大文字で、最初の文字が最初に大文字である場合は変更されません)、主にキャメルを参照していると思いますケースの命名法

テスト2:setNameメソッドを直接削除し
ここに画像の説明を挿入
ます。推測すると、間違いなくエラーが発生します。

このセクションの内容はそれほど多くありません。興味がある場合は、自分でテストして原理を理解することができます。

おすすめ

転載: blog.csdn.net/YSJ367635984/article/details/113104647