Spring-IOC
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