前言:我们通常所说的Spring指的是Spring Framework,也就是我们常说的Spring框架,他是一个开源框架。有着活跃而庞大的社区,这就是它之所以经久不衰的原因。并且Spring也支持广泛的应用场景。
目录
3.1.3 创建一个启动类,是为了测试Spring得功能:即存取对象和取出对象)
9.@Controller、@Service、@Repository、@Component、@Configuration的关系
1.我们先来看一个例子
假设我们要造一辆车,我们就要先有车身,但是车身还要依赖底盘,底盘还要依赖轮胎。我们将这一系列过程想象成一个待实现的程序,程序如下:
public class NewCarExample {
public static void main(String[] args) {
Car car = new Car();
car.run();
}
/**
* 车身
*/
static class Car{
public void run(){
Framework framework = new Framework();
framework.init();
}
}
/**
* 底盘
*/
static class Framework {
public void init(){
Bottom bottom = new Bottom();
bottom.init();
}
}
/**
* 轮胎
*/
static class Bottom{
public void init(){
Tire tire = new Tire();
tire.init();
}
/**
* 执行轮胎的方法
*/
static class Tire{
private int size = 30;
public void init(){
System.out.println("轮胎尺寸: " + size);
}
}
}
}
这里我们首先开始创建一个车,但是车又需要依赖车身,我们就创建一个车身。然后车身又需要依赖底盘,我们再自己创建一个底盘。底盘又需要依赖轮胎,我们再创建轮胎。但是这样太麻烦了,如果我们需要改变轮胎的参数,或者需要加一个自己想要的参数,那么就需要改变上面所有的类。因此我们需要改变这种做法。
2.控制反转IoC的实现
两组开发的区别:
小结:
看了上面的例子,我们就能大概明白什么叫Spring?
Spring就是包含了众多工具方法的IoC容器
如何理解Spring?
Spring就是一个容器,我们用的是时候,就是把对象存储到容器里面,需要的时候,把对象从容器里面取出来。
IoC是啥?有什么区别
IoC是控制反转,使用控制反转的思路可以实现依赖类之间的解耦,我们需要在当前类使用它的时候,把它注入进来就行。在底层依赖类发生变化的时候,无需关心他的具体实现和生命周期。因为IoC是把自己实现的依赖类的主权交给其他人来实现。
DI是依赖注入,是IoC的一种具体实现手段。指的是在程序运行的时候,动态的将对象注入到当前类的一种实现机制。
区别:IoC是指导思想,而DI是具体的实现手段
Spring的核心功能是啥?
Spring的核心功能是管理对象,将对象动态的注册进去,用的时候将对象取出来。
3.Spring项目得创建和使用
3.1创建Spring项目
3.1.1基于Maven创建Spring项目
3.1.2在Maven项目中添加Spring核心包
别忘记点击重新导入:
此时我们得项目已经从Maven项目变成了Spring项目
3.1.3 创建一个启动类,是为了测试Spring得功能:即存取对象和取出对象)
4. 将对象存储到Spring中
4.1先创建一个业务对象
4.2将对象存储到Spring中
规范起见,我们起名叫spring.xml,后缀一定是xml
5.从spring框架中读取存储的业务对象
5.1先获取Spring的上下文对象
5.2通过Spring上下文对象来获取业务对象
6.获取Bean对象的3种方式
6.1通过bean的id来获取
6.2通过类型来获取
6.3通过id+类型的方式来获取bean
7.获取Spring的另一种方式BeanFactory
8.更简单的读取业务对象
过程如下:
1)创建一个Maven项目
2)引入spring-context/spring-beans框架,将Maven项目变为Spring项目
3)创建一个普通的类和main进行测试
这里的第一步就和上述的一样,我们直接从第二步开始:
8.1配置
8.2使用注解将bean对象存储到spring中
8.2.1注解分类
8.2.2创建一个普通类,添加main,方便后面演示
8.3使用5种类注解实现对象存储在Spring框架
注意:读取存入对象的id,默认情况下是首字母小写
8.4关于存储目录
8.5 使用方法注解@Bean将对象存储到Spring中
8.5.1@Bean重命名
9.@Controller、@Service、@Repository、@Component、@Configuration的关系
因此我们可以认为5个类注解其实就是1个,因为其他四个都是Component的子类
10.一个小细节
假设我们使用类注解Component来存对象到Spring中
我们打开来Spring中获取beanName的源码来看:
那么我们将前两个字母大写来看看效果:
这一点我们一定要注意!!!