学習オブジェクトを作成するための2スプリングのバネ

道のオブジェクトを作成するためのバネ

引数なしのコンストラクタでオブジェクトを作成します。1.

pojo类

public class User2 {
    private String name;
    public User2(){
        System.out.println("user2 的无参构造函数");
    }
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User2{" +
                "name='" + name + '\'' +
                '}';
    }
}

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">
    <!--通过无参构造函数创建对象-->
    <bean id="user2" class="com.cong.pojo.User2">
        <property name="name" value="cong2"/>
    </bean>
</beans>

テストカテゴリ

    @Test
    public void test2(){
        //通过无参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User2 user = (User2) context.getBean("user2");
System.out.println(user);
    }

見つけることができるの結果は、引数なしのコンストラクタを呼び出します

user2 的无参构造函数
User2{name='cong2'}

コンストラクタでオブジェクトを作成します。2.パラメータを持っています

pojo类

public class User3 {
    private String name;
    public User3(){
        System.out.println("user3 的无参构造函数");
    }
    public User3(String name){
        this.name = name;
        System.out.println("user3 的有参构造函数");
    }
    @Override
    public String toString() {
        return "User3{" +
                "name='" + name + '\'' +
                '}';
    }
}

3つの書き込みXMLがあります。

    <!--1.下标赋值-->
    <bean id="user31" class="com.cong.pojo.User3">
        <constructor-arg index="0" value="cong31"/>
    </bean>
    <!--2.类型赋值,不建议使用-->
    <bean id="user32" class="com.cong.pojo.User3">
        <constructor-arg type="java.lang.String" value="cong32"/>
    </bean>
    <!--3.直接通过参数名设置,推荐-->
    <bean id="user33" class="com.cong.pojo.User3">
        <constructor-arg name="name" value="cong33"/>
    </bean>

テストカテゴリ

    @Test
    public void test3(){
        //通过有参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User3 user = (User3) context.getBean("user31");
        System.out.println(user);
    }

その結果、あなたが見ることができます

user3 的有参构造函数
User3{name='cong31'}

結論:コンフィギュレーション・ファイルのロード時間で。どの管理対象オブジェクトが初期化されます!

オブジェクトを作成するには、工場まで延長

オブジェクトを作成するには1、通常の工場

時々植物のクラスの使用方法の共通を書くために他の人々を使用します(クラス、そして春の容器に使用するオブジェクトを作成するために)実際の開発のオブジェクトを作成し、これらのクラスは、JARパッケージに存在するかもしれません我々は変更されません

アナログ・ファクトリークラス

public class User2Factory {
    public User2 getUser2(){
        User2 user2 = new User2();
        user2.setName("userByFactory");
        return user2;
    }
}

XML

    <bean id="factory" class="com.cong.pojo.User2Factory"/>
    <!--模拟工程创建对象-->
    <bean id="userByFactory" factory-bean="factory" factory-method="getUser2"/>

テスト

    //模拟工厂创建对象
    @Test
    public void test4(){
        //通过有参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User2 userByFactory = (User2) context.getBean("userByFactory");
        System.out.println(userByFactory);
    }

2、静的なファクトリは、オブジェクトを作成します

(クラスの静的メソッドを使用してオブジェクトを作成し、ばね容器にするために)植物に静的メソッドを使用してオブジェクトを作成します

静的シミュレーションプロジェクト

public class StaticFactory {
    public static User2 getUser2(){
        User2 user2 = new User2();
        user2.setName("userByFactory");
        return user2;
    }
}

XML

    <!--模拟静态工长创建对象-->
    <bean id="userByStaticFactory" class="com.cong.pojo.StaticFactory" factory-method="getStaticUser2"/>

テスト

    //模拟静态工厂创建对象
    @Test
    public void test5(){
        //通过有参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User2 userByStaticFactory = (User2) context.getBean("userByStaticFactory");
        System.out.println(userByStaticFactory);
    }

おすすめ

転載: www.cnblogs.com/ccoonngg/p/12026743.html