Spring(2)コンストラクターインジェクション

Springのコンストラクターインジェクション

前回の記事では、Springは、Springへのオブジェクトの作成に依存して、プログラム間の依存関係を減らすことができると述べました。
しかし、クラスにデフォルトのコンストラクターがない場合、またはコンストラクターが上書きされている場合、オブジェクトが作成されても、クラス内のメソッドを呼び出すことはできません。

このノートでは、主にSpringでのコンストラクターのパラメーター注入について説明します。最初に、元々UserServiceImplであったクラスを変換し、パラメーターを使用してコンストラクターを指定します。これにより、元のデフォルトコンストラクターが上書きされます。

public class UserServiceImpl implements IUserService {
    
    
    private String name;
    private Integer age;
    private Date birthday;

 
    public UserServiceImpl(String name, Integer age, Date birthday) {
    
    
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }

    public void queryAll() {
    
    
        System.out.println(name+","+age+","+birthday+".");
    }
}

次に、bean.xmlには、次の属性を持つconstructor-argタグがあります。

  • type:注入されるデータのデータ型を指定するために使用されます。データ型は、コンストラクター内の1つまたはいくつかのパラメーターの型でもあります。
  • index:コンストラクター内の指定されたインデックス位置でパラメーターに注入されるデータを割り当てるために使用されます。パラメータの位置は0から始まります
  • name:コンストラクターで指定された名前にパラメーターを割り当てるために使用されます
  • 値:基本的なデータ型と文字列型のデータを提供するために使用されます
  • ref:他のBeanタイプのデータを指定するために使用されます。上記の日付として

上記の属性を使用すると、コンストラクターの挿入に一般的に使用される名前と値を使用できます

    <bean id="UserService" class="com.imis.service.impl.UserServiceImpl">
        <constructor-arg name="age" value="18"></constructor-arg>
        <constructor-arg name="name" value="mike"></constructor-arg>
        <constructor-arg name="birthday" ref="now"></constructor-arg>
    </bean>
    <bean id="now" class="java.util.Date"></bean>
public static void main(String[] args) {
    
    
        //1.获取核心容器对象
        ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");
        //2.根据id获取bean
        IUserService is=ac.getBean("UserService",IUserService.class);
        is.queryAll();
    }
mike,18,Sun Jan 17 14:41:03 CST 2021.

おすすめ

転載: blog.csdn.net/weixin_45925906/article/details/112743981