Spring IOC創建對象的兩種方式

IOC創建對象的方式

一、 使用無參構造創建對象(默認方式)

創建實體類

註意:屬性必須要有set方法,來完成註入

public class User {
  private String name;

  public User() {
    System.out.println("執行瞭User類的無參構造方法~");
  }

  public User(String name){
    this.name = name;
    System.out.println("執行瞭User類的有參構造方法");
  }

  //使用無參構造方法時,必須要設置set方法,因為註入時 需要通過set方法註入
  public void setName(String name) {
    this.name = name;
  }

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

配置Bean

<?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="user" class="com.test.pojo.User">
    <property name="name" value="gyp"/>
  </bean>

</beans>

測試類

public class MyTest {
  public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    User user = context.getBean("user", User.class);
    System.out.println(user);
  }
}

​ 結果:

二、使用有參構造創建對象

  • 通過下標註入
  • 通過名字註入 【推薦】
  • 通過類型註入

有參構造,不需要set方法註入

通過下標方式註入(通過index來選擇,給有參構造的第幾個參數註入

(1)配置Bean

	<bean id="user" class="com.test.pojo.User">
    <constructor-arg index="0" value="gyp"/>
  </bean>

(2)測試結果

通過名字註入

(1)配置Bean

  <bean id="user" class="com.test.pojo.User">
    <constructor-arg name="name" value="gyp"/>
  </bean>

(2)測試結果

通過類型註入(不建議使用!因為當類裡面有兩個相同類型的屬性時,無法給屬性註入

(1)配置Bean

	<bean id="user" class="com.test.pojo.User">
    <constructor-arg type="java.lang.String" value="gyp"/>
  </bean>

(2)測試結果

總結:在加載配置文件的時候,IOC就已經創建好瞭對象!

到此這篇關於Spring IOC創建對象的兩種方式的文章就介紹到這瞭,更多相關Spring IOC創建對象內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: