一緒に書く習慣を身につけましょう!「ナゲッツデイリーニュープラン・4月更新チャレンジ」に参加して15日目です。クリックしてイベントの詳細をご覧ください。
Beanの共通属性構成
id
Beanの一意の識別子、同じSpringコンテナでの重複は許可されていません
クラス
フルクラス名。オブジェクトを反射的に作成するために使用されます
範囲
スコープには、シングルトンとプロトタイプの2つの主要な値があります(デフォルトはシングルトンです)
シングルトンに設定すると、コンテナ内のBeanオブジェクトは1つだけになります。オブジェクトaddressは、デフォルトのコンテナが作成されるときに作成されます。
プロトタイプに設定すると、コンテナ内に複数のBeanオブジェクトが存在します。getBeanメソッドを呼び出して取得するたびに、新しいオブジェクトが作成されます。
Student stu = studentDao.getStudentById(30);
Student stu2 = studentDao.getStudentById(30);
如果配置文件中
<bean class="com.sangeng.dao.impl.StudentDaoImpl" id="studentDao" scope="prototype">
prototype里面stu和stu2地址不一样,是不同的对象
<bean class="com.sangeng.dao.impl.StudentDaoImpl" id="studentDao" scope="singleton">
singleton里面stu和stu2地址一样,调用的是同一个对象
复制代码
DI依存性注入
DIは、IOCを表現する別の方法です。つまり、コンポーネントは、事前定義された方法(setterメソッドなど)でコンテナーからのリソースインジェクションを受け入れます。IOCに比べて、この声明はより直接的です。
したがって、結論は次のとおりです。IOCは制御の反転のアイデアであり、DIはIOCの具体的な実現です。
元の方法:
//创建容器
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取对象
Student stu = (Student) app.getBean("student");
//通过set方法
stu.setId(3);
//也可以通过构造器
Student stu2 = new Student("东南枝",20,19);
复制代码
セットメソッド注入
プロパティを挿入するBeanタグで構成します。前提は、クラスが提供された属性に対応するsetメソッドを持っていることです。
public class Student {
private String name;
private int id;
private int age;
private Dog dog;
复制代码
setメソッドを構成してから、構成ファイルxmlでプロパティを構成します
<bean class="com.domain.Dog" id="dog">
<property name="name" value="小白"></property>
<property name="age" value="6"></property>
</bean>
<bean class="com.domain.Student" id="student" >
<!--
name属性用来指定要设置哪个属性
value属性用来设置要设置的值
ref属性用来给引用类型的属性设置值,可以写上Spring容器中bean的id
-->
<property name="name" value="东南枝"></property>
<property name="age" value="20"></property>
<property name="id" value="1"></property>
<property name="dog" ref="dog"></property>
</bean>
复制代码
知らせ
ref属性が誤ってvalue属性として書き込まれた場合、例外がスロー
されます。原因:java.lang.IllegalStateException:タイプ'java.lang.String'の値を必要なタイプ'com.atguigu.iocに変換できません。 component.HappyMachine'for property' happyMachine':一致するエディターまたは変換戦略が見つからない
ということは、String型を目的のHappyMachine型に変換できないことを意味します.value
プロパティを使用する場合、Springはこのプロパティのみを通常の文字列と見なします、およびこのプロパティは考慮されません。これはBeanのIDであり、それに基づいて値を割り当てるBeanは見つかりません。