Spring 容器
一、概念
IoC容器
IoC容器是具有 DI 和 **DL **功能的容器,我们把需要使用的对象都交给容器进行管理,这样不需要我们通过手动new的方式去创建对象,而是由容器直接帮我们创建、组装好(DI),当我们需要使用时直接从容器获取即可(DL)。
DI:依赖注入,主要负责对象的实例化、对象的初始化、对象和对象直接的依赖关系配置、对象的销毁等操作。
DL:依赖查找,主要是对外提供对象的查找操作。
Bean
由Spring容器管理的对象统称为Bean对象。本质上它就是普通的java对象,跟我们自己new的对象是一样的,只是这些对象是被容器进行创建和管理的。
那么容器如何知道它需要创建管理哪些Bean对象呢。显而易见,需要我们告诉它,因为容器中管理的Bean是要能被我们在需要的时候拿来即用的,那么它的属性、方法都是我们自己提前设计好的,容器只是根据我们提供的定义进行创建和管理Bean对象的。
简单来说,我们会提供一个配置文件给容器,配置文件上定义了要创建的Bean对象的信息(Bean的配置信息Spring 官方称它为配置元数据),容器读取配置文件根据里面提供的Bean的配置元数据来构建和组装我们需要的Bean。
容器使用步骤
- 引入Spring相关的maven配置
- 配置bean对象的配置元数据
- 创建Spring容器,并指定它需要加载的bean配置文件,容器启动后,加载配置元数据,然后创建定义好的bean,并将这些bean放在容器中。
- 通过容器提供的方式,获取容器中的对象,然后使用。
二、基本使用
创建 spring-demo 项目,引入依赖
<properties>
<spring.version>5.3.23</spring.version>
</properties>
<dependencies>
<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>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
创建 HelloSpring
类
public class HelloSpring {
public void say(String name) {
System.out.println("hello Spring, I am " + name + ",I'm going to start studying Spring.");
}
}
配置元数据
这次我们采用 Java 注解的方式来配置元数据。只需要在 HelloSpring
类上使用 @Component
注解即可
@Component
public class HelloSpring {
public void say(String name) {
System.out.println("hello Spring, I am " + name + ",I'm going to start studying Spring.");
}
}
使用容器
public class Client {
public static void main(String[] args) {
//创建容器,并指定加载类
// 这个操作就 创建容器,并指定容器需要加载的配置元信息
ApplicationContext context = new AnnotationConfigApplicationContext(HelloSpring.class);
//DL操纵,从容器内获取 HelloSpring 对象
HelloSpring helloSpring = context.getBean(HelloSpring.class);
//调用 HelloSpring 的 say 方法
helloSpring.say("muci");
}
}
运行输出:
hello Spring, I am muci,I'm going to start studying Spring.
三、总结
本文主要介绍了Spring中 容器、Bean的概念,并且演示了容器的最基本使用。
- 首先,要引入Spring的依赖。
- 需要定义bean的配置元数据(告诉容器它需要创建哪些bean,以及bean对象的最终创建格式。
- 创建容器,并指定容器加载的配置元数据。
- 从容器中获取对象。
当然,大家现在肯定还有很多疑惑,AnnotationConfigApplicationContext
是什么,@Component
又是什么,不要着急,接下来我们会详细介绍容器、bean的定义。