ホームページ  >  記事  >  Java  >  Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

WBOY
WBOY転載
2023-05-12 08:40:06819ブラウズ

1.Spring プロジェクトの作成

1.1 Maven プロジェクトの作成

最初のステップは、Maven プロジェクトを作成することです。Spring も Maven に基づいています。

Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

1.2 Spring 依存関係の追加

2 番目のステップは、Maven プロジェクト (spring-context) に Spring サポートを追加することです。 、spring-beans)

pom.xml ファイルに依存関係を追加します。

<dependencies>
   <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>
</dependencies>

更新して、読み込みが完了するまで待ちます。

Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

1.3 スタートアップ クラスの作成

3 番目のステップは、簡単なテスト用のスタートアップ クラスと main を作成することです

Java ディレクトリにクラスを作成してコードを記述するだけです。ここでは Spring プロジェクトの作成方法と Spring の簡単な使用方法を紹介するだけなので、Tomcat などには依存しません。Main クラスを直接記述する方が直感的です。

Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

1.4 国内ソースの設定

外部ソースは不安定なため、2 番目のステップで Spring 依存関係を導入すると失敗する可能性があるため、以下に国内ミラーの設定方法を説明します。ソース。

Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

既製の settings.xml ファイル リンク:

アドレス 1

アドレス 2:抽出コード:9thv

既に設定ファイルがあるが、mirrorの設定を行っていない場合の設定内容は、

<mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>        
      </mirror>

2. Beanオブジェクトの格納または読み込み

2.1 スプリング構成ファイルの追加

スプリング構成ファイルの追加 (初回のみ必要。初めてではない場合、この手順は無視できます)

右-リソース ディレクトリをクリックし、新しい .xml 構成ファイルを作成します。ファイル名は spring.xml または spring-config.xml にすることをお勧めします。

Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

spring.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 http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

2.2 Bean オブジェクトの作成

最初のステップは、# を作成することです。 # #Beanオブジェクト。

たとえば、

User オブジェクトを挿入する場合は、まず User クラスを作成します。

package com.bean;
public class User {
    public void sayHi(String name) {
        System.out.println("你好!" + name);
    }
}

構成ファイルを通じて

Bean を Spring に注入します。つまり、Spring 構成ファイル内の次のステートメントを通じてそれを注入します。

<bean id="user" class="com.bean.User"></bean>

Spring のオブジェクトはキーと値のペアを通じて保存されます。

keyidvalueclass

命名規則:

id は、userid などの小さなキャメルケースの名前を使用します。class は、 などの大きなキャメルケースの名前を使用します。ユーザーID### 。 2.3 Bean オブジェクトの読み取り

Spring から

Bean

オブジェクトを読み取りたい場合は、まず Spring コンテキスト オブジェクトを取得する必要があります。これは Spring を取得するのと同じです。次に、スプ​​リング コンテキスト オブジェクトによって提供されるメソッドを通じて、使用する必要がある Bean オブジェクトを取得します。最後に、Bean オブジェクトを使用できます。 <pre class="brush:java;">import com.bean.User; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { //1.得到上下文对象 ApplicationContext context = new ClassPathXmlApplicationContext(&quot;spring.xml&quot;); //2.获取bean对象,此处是根据id获取 User user = (User) context.getBean(&quot;user&quot;); //3.使用bean user.sayHi(&quot;zhangsan&quot;); } }</pre>実行結果:

Hello!zhangsan

プロセスは終了コード 0で終了しました

Beanファクトリー(古い) Bean を取得します。
import com.bean.User;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class Main2 {
    public static void main(String[] args) {
        //1.得到Bean工厂
        BeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring.xml"));
        //2.获取Bean
        User user = (User) factory.getBean("user");
        //3.使用
        user.sayHi("李四");
    }
}

Bean ファクトリーですが

実行結果:

Hello! Li Si

プロセスは終了コード 0

Discovered
ApplicationContext# で終了しました## と

BeanFactory はコンテナから Bean を取得でき、どちらも getBean メソッドを提供します。すると、ApplicationContext と # で問題が発生します。 ##BeanFactory違いは何ですか? 同じ点: どちらもコンテナから Bean を取得でき、両方とも

getBean

メソッドを提供します。 違い:

BeanFactory
  • ApplicationContext

    の親クラスであり、 BeanFactory は Basic のみを提供しますBean オブジェクトの関数と ApplicationContext へのアクセスは、 BeanFactory のすべての関数に加えて、国際化などの他の追加関数の実装もあります。 、リソースアクセスおよびその他の機能が達成されます。 これはパフォーマンスの点で異なります。

    BeanFactory
  • Loads on Demand
  • Bean

    (これは遅延方法です)。ApplicationContext これはハングリーな方法です。作成時にすべての Bean がロードされ、すぐに使用できるようになります。 ############証明する:###

    我们在bean目录下添加一个Blog类,并完善BlogUser类的构造方法,当类被构造时会发出一些信号,在获取上下文或工厂时根据这些信号让我们感知到它是否会被构造。

    Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    public class Main3 {
        public static void main(String[] args) {
            //1.得到上下文对象
            ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        }
    }

    运行结果:

    Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

    ApplicationContext创建时,会将所有的对象都构造,饿汉的方式。

    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.xml.XmlBeanFactory;
    import org.springframework.core.io.ClassPathResource;
    public class Main4 {
        public static void main(String[] args) {
            //1.得到Bean工厂
            BeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring.xml"));
        }
    }

    Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

    BeanFactory创建时,什么都没有,说明是懒汉的方式。

    ApplicationContext中的多种getBean方法:

    方法1:根据 bean name获取bean

    User user = (User) context.getBean("user");

    方法2:根据bean type获取bean

    User user = (User) context.getBean(User.class);

    只有beans中只有一个类的实例没有问题,但是个有多个同类的实例,会有问题,即在spring中注入多个同一个类的对象,就会报错。

    我们来试一试,首先在Spring配置文件,注入多个User对象:

    Java Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析

    然后我们再通过这种方式来获取对象,我们发现报错了,报错信息如下:

    Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.bean.User' available: expected single matching bean but found 3: user,user1,user2

    抛出了一个NoUniqueBeanDefinitionException异常,表示注入的对象不是唯一的。

    方法3:综合上述两种,可以根据bean namebean type来获取bean

    相比方法1,更加健壮。

    User user = context.getBean("user", User.class);

以上がJava Springフレームワーク作成プロジェクトとBeanストレージと読み込み例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。