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
标签:Spring,private,spring,注解,IOC,public,注入 From: https://www.cnblogs.com/gzyhrc/p/18253010