該內容所有基於xml的配置java
1.經過構造器建立bean對象,只須要在配置文件中聲明bean的id和class,就會默認使用bean的無參構造方法建立bean,bean會很好的被建立,這種方式最好用了。this
2.經過靜態工廠建立bean,這種方法容許咱們自定義返回的是什麼bean,須要在配置中制定靜態工廠方法,該方法返回一個bean對象。xml
<bean id="student" class="com.yqg.bean.Student" factory-method="getInstance"></bean>
package com.yqg.bean; /** * @author yqg * @date 2019/01/29 */ public class Student { private String name; private Integer age; private String sex; public static Student getInstance(){ return new Student(); } public void speak (){ System.out.println("I speak chinese ,teacher!"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
3.使用實例工廠建立bean,須要在配置文件中聲明工廠類,而後聲明須要被工廠建立的bean,並指定工廠方法,這也是一種注入bean的方法。對象
<bean id="factory" class="com.yqg.util.Factory"></bean> <bean id="student1" factory-bean="factory" factory-method="getStudent"></bean>
package com.yqg.util; import com.yqg.bean.Student; /** * @author yqg * @date 2019-01-30 09:22 */ public class Factory { public Student getStudent(){ System.out.println("。。。"); return new Student(); } }
4.經過java註解聲明beanblog
在get
1.經過setter方法注入,在bean中聲明須要被注入的屬性,並生成get和set方法,這是最經常使用的方式。class
2.經過構造器注入,在構造器中聲明須要注入的bean,其目的是爲了在建立bean時強制將一些必須的該bean依賴的bean同時建立。import
<!--經過構造方法注入bean-->
<bean id="school" class="com.yqg.bean.School"> <constructor-arg ref="teacher"></constructor-arg> </bean>
<!--經過set方法注入bean--> <bean id="teacher" class="com.yqg.bean.Teacher"> <property name="student" ref="student"></property> <property name="name" value="泰羅"></property> </bean>
<!--經過靜態工廠建立bean--> <bean id="student" class="com.yqg.bean.Student" factory-method="getInstance"></bean>
3.自動注入,使用自動注入策略可以將該bean在被須要的時候依據自動注入策略注入到其餘bean對象中。配置
自動注入有no、byType、byName、constructor、autodecet五種方式,no就是不使用自動注入策略,在須要的使用時經過構造或者set手工注入依賴,byType意味着該類在其餘bean中若是有相同類型的屬性,該bean將會被注入到類中,同理byName意味着在其餘bean中若是有屬性的名稱與該bean的id相同,就會被注入進去,constructor方式在構造器須要使用的時候以byType方式被注入,autodect是一種全能方案,若是有有參構造器使用constructor方式,不然使用byType自動裝配。date
注意,byType的生成策略不能有多個相同類型可是不一樣id的bean,也就是一個類型只能有一個bean,不能有多個對象。
<!--該bean使用byType裝配策略--><bean id="teacher" class="com.yqg.bean.Teacher" autowire="byType"> <property name="name" value="泰羅"></property> </bean>