Spring IOC——依賴注入

ckxllf發表於2020-01-17

  spring中的依賴注入

  IOC作用:降低程式間的耦合(依賴關係)

  依賴關係的管理:交給spring來維護(在當前類需要用到其他類的物件,由spring為我們提供,我們只需要在配置檔案中說明)

  依賴關係的維護:依賴注入

  依賴注入:

  能注入的資料:

  基本型別和String

  其他bean型別(在配置檔案中或者註解配置過的bean)

  複雜型別/集合型別

  bean物件 注入的方式:

  使用建構函式

  使用set函式

  使用註解

  使用建構函式

  建構函式往入: |

  使用的標籤:constructor- arg

  標籤出現的位置: bean標籤的內部

  標籤中的屬性

  type:用於指定要注入的資料的資料型別,該資料型別也是建構函式中某個或某些引數的型別

  index:用於指定要注入的資料給建構函式中指定索引位置的引數賦值。索引的位置是從e開始

  name:用於指定給建構函式中指定名稱的引數賦值常用的

  =========以上三個用於指定給建構函式中哪個參效賦值

  value: 用於提供基本型別和String型別的資料

  ref:用於指定其他的bean型別資料。它指的就是在spring的Ioc核心容器中出現過的

  xmlns:xsi="

  xsi:schemaLocation="

  package com.ay.service;

  public interface AccountService {

  public void saveAccount();

  }

  package com.ay.service.impl;

  import com.ay.service.AccountService;

  import java.util.Date;

  public class AccountServiceImpl implements AccountService {

  private String name;

  private Integer age;

  private Date birthday;

  @Override

  public void saveAccount() {

  System.out.println("方法建立成功了");

  }

  public AccountServiceImpl(String name, Integer age, Date birthday) {

  this.name = name;

  this.age = age;

  this.birthday = birthday;

  }

  @Override

  public String toString() {

  return "AccountServiceImpl{" +

  "name='" + name + '\'' +

  ", age=" + age +

  ", birthday=" + birthday +

  '}';

  }

  }

  package com.ay.ui;

  import com.ay.service.AccountService;

  import org.springframework.context.ApplicationContext;

  import org.springframework.context.support.ClassPathXmlApplicationContext;

  public class Client {

  public static void main(String[] args) {

  ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");

  AccountService as = (AccountService)ac.getBean("accountService");

  as.saveAccount();

  System.out.println(as.toString());

  }

  }

  總結:

  優勢:在獲取bean物件時,注入資料是必須的操作,否則物件無法建立成功。

  弊端:改變了bean物件的例項化方式,使我們在建立物件時,如果用不到這些資料,也必須提供。

  使用set函式 鄭州引產手術費用多少錢

  涉及的標籤: property

  出現的位置: bean標籤的內部

  標籤的屬性

  name:用於指定往入時所呼叫的set方法名稱

  value: 用於提供基本型別和String型別的資料

  ref:用於指定其他的bean型別資料。它指的就是在spring的Ioc核心容器中出現過的bean物件

  package com.ay.service;

  public interface AccountService {

  public void saveAccount();

  }

  package com.ay.service.impl;

  import com.ay.service.AccountService;

  import java.util.Date;

  public class AccountServiceImpl implements AccountService {

  private String name;

  private Integer age;

  private Date birthday;

  @Override

  public void saveAccount() {

  System.out.println("方法建立成功了");

  }

  public void setName(String name) {

  this.name = name;

  }

  public void setAge(Integer age) {

  this.age = age;

  }

  public void setBirthday(Date birthday) {

  this.birthday = birthday;

  }

  @Override

  public String toString() {

  return "AccountServiceImpl{" +

  "name='" + name + '\'' +

  ", age=" + age +

  ", birthday=" + birthday +

  '}';

  }

  }

  package com.ay.ui;

  import com.ay.service.AccountService;

  import org.springframework.context.ApplicationContext;

  import org.springframework.context.support.ClassPathXmlApplicationContext;

  public class Client {

  public static void main(String[] args) {

  ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");

  AccountService as = (AccountService)ac.getBean("accountService");

  as.saveAccount();

  System.out.println(as.toString());

  }

  }

  xmlns:xsi=

  xsi:schemaLocation=">

  總結:

  優勢:建立物件時沒有明確的限制,可以直接使用預設建構函式

  弊端:如果有某個成員必須有值,則獲取物件是有可能set方法沒有執行。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2673763/,如需轉載,請註明出處,否則將追究法律責任。

相關文章