什么是Bean、IoC

本文深入介绍了Spring框架中的Bean和IoC(控制反转)概念。Bean是被Spring IoC容器管理的对象,遵循特定规范如私有属性、构造函数和setter/getter。IoC通过依赖注入实现对象间的松耦合,Spring容器负责对象的创建和依赖注入。文章还详细阐述了如何通过构造函数传递依赖以符合IoC原则,以及为何将对象的构建过程交给Spring来实现控制反转。
摘要由CSDN通过智能技术生成

1.Bean定义

Srping官方文档的bean定义

In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans.A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container.

翻译:

在Spring中,构成应用程序主干并由Spring IoC容器管理的对象称为bean,bean是一个由Spring Ioc容器实例化、组装和管理的对象

概念简单明了,提取关键信息:

  • bean是一个对象,一个或多个
  • bean通过Spring Ioc进行管理
  • 我们的应用程序由一个个bean组成

2.控制反转(IoC)

控制反转应为全称:Inversion of Control,简称IoC。
控制反转通过依赖注入(DI)方式实现对象之间的松耦合关系。
程序运行时,依赖对象由【辅助程序】动态生成注入到被依赖对象中,动态绑定两者的使用关系。
Spring IoC容器就是这样的辅助程序,它负责对象的生成和依赖的注入,然后再交给我们使用。
简而言之,就是:IoC就是一个对象定义其依赖关系而不创建它们的过程。

2.1 私有属性保存依赖

使用私有属性保存依赖对象,并且只能通过构造函数参数传入
构造函数的参数可以使工厂方法、保存类对象的属性,或是工厂方法返回值。
假设有一个Computer类:

public class Computer{
	private String cpu; //CPU型号
	private int ram;	//RAM大小,单位GB
	
	public Computer(String cpu,int ram){
		this.cpu = cpu;
		this.ram = ram;
	}
}

有另一个Person类依赖于Computer类,符合IoC的做法如下:

public class Person{
	private Computer computer;
	
	public Person(Computer computer){
		this.computer = computer;
	}
}

而不符合IoC的做法如下:

//直接实例化Computer类
public class Person{
	private Computer = computer = new Computer("AMD",3);
}
//通过 非构造函数 传入依赖
public class Person{
	private Computer;
	public void init(Computer computer){
		this.computer = computer;
	}
}

2.2 让Spring控制类构建过程

不用new,让Spring控制new过程。
在Spring中,基本不需要new一个类,这些都是让Spring去做的。
Spring 启动时会把所需的类实例化成对象,如果需要依赖,则先实例化依赖,然后实例化当前类。
因为依赖必须通过构造函数传入,所以实例化时,当前类就会接受并保存所有依赖的对象。
这一步也就是所谓的依赖注入。

2.3 这就是IoC

在spring中,类的实例化、依赖的实例化、依赖的传入都交由Spring Bean容器控制,
而不是用new方式实例化对象,通过非构造函数方法传入依赖等常规方法。
实质的控制权已经交由程序管理,而不是程序员管理,所以叫做控制反转。

3.Bean

对于bean的概念:

  • Bean容器,或称spring Ioc容器,主要用来管理对象和依赖,以及依赖的注入。
  • bean是一个Java对象,根据bean规范编写出来的类,并由bean容器生成的对象就是一个bean。
  • bean规范

    bean规范如下:
  • 所有属性为private
  • 提供默认构造方法
  • 提供getter和setter
  • 实现serializable接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值