Spring-1-SpringフレームワークとApplicationContextオブジェクトを理解する

目次

1.春の概要

1.1Springフレームワークとは

1.2春の利点

1.2.1軽量

1.2.2インターフェースプログラミングの場合、デカップリング

1.2.3AOPプログラミングのサポート

1.2.4さまざまな優れたフレームワークの統合を促進する

1.3春のアーキテクチャ

2.IoC制御の反転

2.1開発ツールの準備

2.2春の最初のプログラム

2.2.1アイデアを使用して空のプロジェクトプロジェクトを作成し、それにモジュールを追加します。Mavenに基づくSpringプロジェクト

2.2.2作成後のプロジェクト構造図は以下のとおりです。

2.2.3IOCを使用してSpringでオブジェクトを作成する手順は次のとおりです。

2.2.4(1)pom.xmlファイルにmaven依存関係を導入します

2.2.4(2)インターフェイスとエンティティクラスを定義する

2.2.4(3)Spring構成ファイルを作成する

2.2.4(4)Springコンテナによって作成されたBeanを使用して、myTest.javaテストクラスでのテストに役立てます。

2.2.5スプリングを使用して非カスタムクラスオブジェクトを作成する

2.3ApplicationContextコンテナインターフェイスおよびその他の実装クラス

2.3.0 ApplicationContextインターフェース(コンテナー)

2.3.1構成ファイルはクラスパスにあります

2.3.2ApplicationContextコンテナ内のオブジェクトのアセンブリのタイミング

2.3.4スプリングコンテナを使用して作成されたJavaオブジェクト

2.3.5Springコンテナにあるjavaオブジェクトの数とこれらのjavaオブジェクトの詳細の出力を確認する方法


[ステーションBの電源ノードのティーチングビデオを参照してください-WangHe先生] https://www.bilibili.com/video/BV1nz4y1d7uy?p=1

1.春の概要

1.1Springフレームワークとは

Springは、2003年に登場した軽量のJava開発フレームワークです。エンタープライズアプリケーション開発の複雑さを解決するために作成されました。Springの中核は、制御の反転(IoC)とアスペクト指向プログラミング(AOP)です。Springは、Java SE / EEで使用できる軽量のオープンソースフレームワークです。Springの主な機能は、コードを「分離」し、コード間の結合を減らすことです。オブジェクトとオブジェクト(モジュールとモジュール)の関係でコードの関連付けを使用しないようにするためですが、構成を通じて説明します。つまり、オブジェクト(モジュール)の関係はSpringで説明されています。コードの機能特性に応じて、SpringはIocを使用してビジネスオブジェクト間の結合を減らします。IoCは、相互呼び出しの過程で主要なビジネスを行い、関係を維持する必要がなくなります。つまり、自分で使用するオブジェクトを作成する必要がなくなりますが、Springコンテナによる統合管理、自動「注入」、注入が割り当てられます。AOPを使用すると、システムレベルのサービスを最大限に再利用でき、プログラマーはシステムレベルのサービスをメインのビジネスロジックに手動で「ミックス」する必要がなくなります。代わりに、Springコンテナーが「ウィービング」を完了します。

春の公式ウェブサイトhttps//spring.io/

1.2春の利点

Springはフレームワークであり、半完成のソフトウェアです。20以上のモジュールがあります。コンテナ管理のオブジェクトです。コンテナには物が含まれています。Springコンテナにはテキストや数字は含まれていませんが、オブジェクトが含まれています。Springはオブジェクトを格納するためのコンテナです。

1.2.1軽量

Springフレームワークで使用されるjarは比較的小さく、一般に1Mまたは数百kb未満です。Springコア機能に必要なjarは合計で約3Mです。Springフレームワークは、実行に必要なリソースが少なく、操作効率が高く、他のjarに依存しません。

1.2.2インターフェースプログラミングの場合、デカップリング

Springは、オブジェクトとその依存関係をコンテナごとに管理するIoc反転制御を提供します。これで、プログラムコードの元のオブジェクト作成メソッドがコンテナによって完成しました。オブジェクト間の依存関係の分離。

1.2.3AOPプログラミングのサポート

Springが提供するAOP機能により、アスペクト指向のプログラミングに便利です。従来のOOPでは実装が容易ではない多くの機能をAOPで簡単に処理できます。Springでは、開発者は複雑なトランザクション管理コードから解放され、宣言的な方法で柔軟に対応できます。開発の効率と品質を向上させるために、タイムリーにビジネス管理を実行します。

1.2.4さまざまな優れたフレームワークの統合を促進する

Springは、さまざまな優れたオープンソースフレームワークを除外していません。逆に、Springは、さまざまなフレームワークの使用の難しさを軽減できます。Springは、さまざまな優れたフレームワーク(Struts、Hibernate、MyBatisなど)を直接サポートします。フレームワークの使用を簡素化します。スプリングはパッチパネルのようなもので、他のフレームはプラグであり、簡単に組み立てることができます。どのフレームを使用する必要があるか、このプラグをパッチパネルに挿入します。簡単に取り外す必要はありません。

1.3春のアーキテクチャ

Springは20を超えるモジュールで構成されており、データアクセス/統合(データアクセス/統合)、Web、アスペクト指向プログラミング(AOP、アスペクト)、JVMプロキシ(インストルメンテーション)、メッセージング(メッセージング)、コアコンテナに分割できます。 (コアコンテナ)とテスト(テスト)。

2.IoC制御の反転

制御の反転(IoC、制御の反転)は、従来はプログラムコードによって直接制御されていたオブジェクトの呼び出し権をコンテナに転送することを指す概念およびアイデアであり、オブジェクトの自動アセンブリおよび自動管理はコンテナを介して実現されます。制御の反転は、プログラムコード自体から外部コンテナへのオブジェクトに対する制御の転送です。コンテナを介して、オブジェクトの作成、属性の割り当て、および依存関係の管理を実現します。

制御の反転を意味するIoCは、概念であり、一種の考え方であり、さまざまな方法で実装できます。現在人気のある実装は、[依存関係の注入]です。

依存関係とは何ですか?依存関係:classAにはclassBのインスタンスが含まれ、classBのメソッドがclassAで呼び出されて関数が完了します。つまり、classAはclassBに依存します。

Iocの実現:依存関係インジェクションDI(依存関係インジェクション)、プログラムコードは位置決めクエリを実行せず、これらのタスクはコンテナ自体によって実行されます。

依存関係インジェクションDIは、プログラムの実行中に、支援のために別のオブジェクトを呼び出す必要がある場合、コードで呼び出し先を作成する必要はなく、作成されてプログラムに渡される外部コンテナーに依存することを意味します。

Springの依存関係インジェクションには、呼び出し元と呼び出し先の要件がほとんどなく、オブジェクト間の依存関係の管理を完全にサポートします。

Springフレームワークは、依存関係インジェクション(DI)を使用してIoCを実装します。

Springコンテナは、すべてのJavaオブジェクトの作成と管理を担当するスーパーファクトリです。これらのJavaオブジェクトはBeansと呼ばれます。Springコンテナは、コンテナ内のBean間の依存関係を管理し、Springは「依存関係インジェクション」を使用してBean間の依存関係を管理し、IoCを使用してオブジェクト間の分離と統合を実現します。

2.1開発ツールの準備

開発ツール:idea2017以降。依存関係の管理:maven3以降。jdk:1.8以上。

2.2春の最初のプログラム

2.2.1アイデアを使用して空のプロジェクトプロジェクトを作成し、それにモジュールを追加します。Mavenに基づくSpringプロジェクト

  

    

   

    

2.2.2作成後のプロジェクト構造図は以下のとおりです。

[この時点で、自分でリソースリソースディレクトリを作成し、そのディレクトリを...としてマークします。]

 

2.2.3IOCを使用してSpringでオブジェクトを作成する手順は次のとおりです。

2.2.4(1)pom.xmlファイルにmaven依存関係を導入します

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wind</groupId>
    <artifactId>ch01-hello-spring</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>


    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>

        <!--Spring依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.2</version>
        </dependency>

        <!--单元测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

2.2.4(2)インターフェイスとエンティティクラスを定義する

public interface SomeService { 
    void doSome();
}

public class SomeServiceImpl implements SomeService { 
    public SomeServiceImpl() {
        super();
        System.out.println("SomeServiceImpl无参数构造方法");
    }

    @Override
    public void doSome() { 
        System.out.println("====业务方法doSome()===");
    } 

}

2.2.4(3)Spring構成ファイルを作成する

次に、src / main / resources /ディレクトリにxmlファイルを作成します。ファイル名は任意ですが、SpringではapplicationContext.xmlという名前をお勧めします。通常使用するには、スプリング構成に制約ファイルを追加する必要があります。制約ファイルはxsd拡張子です。

<bean />:インスタンスオブジェクトを定義するために使用されます。インスタンスはBean要素に対応します。

id:この属性はBeanインスタンスの一意の識別子です。プログラムはid属性を介してBeanにアクセスし、BeanとBeanの間の依存関係もid属性を介して関連付けられます。

class: Beanが属するクラスを指定します。これはクラスのみであり、インターフェイスではないことに注意してください。

 

2.2.4(4)Springコンテナによって作成されたBeanを使用して、myTest.javaテストクラスでのテストに役立てます。

2.2.5スプリングを使用して非カスタムクラスオブジェクトを作成する

(1)例:スプリング構成ファイルにjava.util.Date定義を追加します:<bean id = "myDate" class = "java.util.Date" />

(2)MyTestテストクラスで:getBean( "myDate");を呼び出して、日付クラスオブジェクトを取得します。

2.3ApplicationContextコンテナインターフェイスおよびその他の実装クラス

2.3.0 ApplicationContextインターフェース(コンテナー)

ApplicationContextは、Spring構成ファイルをロードし、プログラムの「コンテナー」として機能するために使用されます。2つの実装クラスがあります。

2.3.1構成ファイルはクラスパスにあります

Spring構成ファイルがプロジェクトのクラスパスに保存されている場合は、ClassPathXmlApplicationContext実装クラスを使用してロードします。

2.3.2ApplicationContextコンテナ内のオブジェクトのアセンブリのタイミング

ApplicationContextコンテナは、コンテナオブジェクトが初期化されるときに、その中のすべてのオブジェクトを一度にアセンブルします。将来、これらのオブジェクトをコードで使用する場合は、メモリから直接取得するだけで済みます。実行効率は高くなりますが、メモリを消費します。

2.3.4スプリングコンテナを使用して作成されたJavaオブジェクト

2.3.5Springコンテナにあるjavaオブジェクトの数とこれらのjavaオブジェクトの詳細の出力を確認する方法

Spring config = "beans.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
int nums = ac.getBeanDefinitionCount();
String names [] = ac.getBeanDefinitionNames();

 

 

 

 

 

おすすめ

転載: blog.csdn.net/cmm0401/article/details/112207929