Spring-IOC簡介
IOC(Inversion of Controller)控制反轉。把物件的控制權轉移 Spring框架,由 Spring 框架來管理物件的生命週期(例如物件的建立和銷燬),還可以管理物件之間的依賴關係。
所以 IOC 又叫作 DI
DI簡介
DI(Dependency Injection)依賴注入。當一個物件依賴另一個物件時,容器可以直接把另一個物件注入,直接使用。
依賴注入方式
依賴注入的方式有3種:設值注入,構造注入,註解注入
準備工作:
pom依賴包:
<!--統一管理版本號-->
<properties>
<spring.version>5.3.12</spring.version>
</properties>
<dependencies>
<!--Spring的核心包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring 核心包 結束-->
<!--Lombok依賴包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<scope>provided</scope>
</dependency>
</dependencies>
User實體類:
package com.hrc.Test3; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @FileName: User * @Description: * @Author: hrc * @CreateTime: 2024/6/17 17:42 * @Version: 1.0.0 */ @Data @NoArgsConstructor @AllArgsConstructor public class User { private Integer userId; private String userName; private String realName; private Integer age; private Animal animal; } @Data @AllArgsConstructor @NoArgsConstructor class Animal{ private Integer id; private String name; }
1. 設值注入
設值注入的前提:配置 set注入配置,一定要屬性的set方法
舉個例子:
//類中一定要有這個方法才可以被設值注入
public class A{
private int a;
//set方法
public void setA(int a){
this.a = a;
}
}
設值注入存在兩種方式:
①value 方式,注入的型別為基本型別,如:int,char,double等
②ref 方式,注入的型別為引用型別,如:String,類等
舉個例子:
2. 構造注入
構造注入前提:配置set注入時,必須有建構函式
舉個例子:
public class A{
private int a;
//空建構函式
public A(){}
//全參建構函式
public A(int a){
this.a = a;
}
}
構造注入方式:
3. 註解注入
Spring針對 Bean物件的建立提供以下註解。
①@Component註解:用於放在三層(控制層,服務層,持久層)之外的物件
②@Controller註解:用於控制層
③@Service註解:用於服務層
④@Repository註解:用於持久層
當然,只寫這些註解是不夠的,需要在xml檔案中掃描這些註解才可以放到SpringIOC中
舉個例子:
xml檔案掃描例子:
如何進行物件之間依賴注入呢?
可以使用@Autowired註解注入其他物件
擴充套件知識點
Spring中的 bean預設是單例模式,如果不想是單例,想要原型模式如何設定?
①xml檔案配置bean的方式
②註解的方式配置bean