您现在的位置是:首页 >技术杂谈 >Spring笔记网站首页技术杂谈

Spring笔记

hania_wang 2024-06-06 00:00:03
简介Spring笔记

1、什么是Spring?

Spring是一个包含了众多工具方法IOC容器。


1.什么是容器?
放东西的就是容器;
List/Map -> 数据存储容器
Tomcat -> Web 容器
因此Spring也是一个容器,是一个IOC控制反转的容器

2.什么是IOC?

IOC全称Inversion of control,即控制反转
Spring 是⼀个 IoC(控制反转)容器,重点还在“容器”⼆字上,那么它就具备两个最基础的功能:
1、将对象存⼊到容器;2、从容器中取出对象

所以Spring 最核⼼的功能,就是将对象存⼊到 Spring 中,再从 Spring 中获取对象的过程

3.什么是DI
提起IOC,那么DI也是必不可少的概念
DI 是 Dependency Injection 的缩写,翻译成中⽂是“依赖注⼊”的意思
所谓依赖注⼊,就是由 IoC 容器在运⾏期间,动态地将某种依赖关系注⼊到对象之中。所以,依赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,就是指通过引⼊ IoC 容器,利⽤依赖关系注⼊的⽅式,实现对象之间的解耦。
IoC 是“⽬标”也是⼀种思想,⽽⽬标和思想只是⼀种指导原则,最终还是要有可⾏的落地⽅案,⽽ DI就属于具体的实现

比如,今天天气好,我要去种地,我想去种地是一种思想,就是IOC;但是我动身去仓库拿工具种地就是一种具体实现方式,就是DI;

2、如何创建Spring

创建一个Spring项目主要有三个步骤:

1.创建Maven项目
2.添加Spring依赖
3.创建启动类

1.创建Maven项目
在这里插入图片描述
2.将Spring框架加入到项目中
到Maven中央仓库中区找
在这里插入图片描述
3.创建启动类
在这里插入图片描述

这样一份Spring就创建好了


注意:一定要配置国内源,并且路径中尽量不要出现中文(我的出现了,不推荐)
在这里插入图片描述


3、Spring简单的读和取操作

Spring存Bean对象的方式:

1.直接在spring-config.xml里面放置对象

在这里插入图片描述

在这里插入图片描述


2.通过配置扫描路径和添加注解的方式添加Bean对象

添加Bean对象可以通过两种注解
1.类注解:@Controller、@Service、@Repository、@Component、@Configuration
2.方法注解:@Bean


1.使用类注解
在这里插入图片描述
在这里插入图片描述
注意:此处我们创建的User类,所以通过getBean来寻找对象的时候前面一个参数是id,默认是类首字母小写,第二个参数是类对象。
问题一:如果我们的类名第一个字母也是小写呢?
如果类名的首字母是小写,那么和默认方式是一样的,首字母小写即可

问题二:如果我们的类名首字母和第二个字母都是大写呢?
使用原类名即可

结论:当使用五大类注解时,默认情况下获取Bean对象,只需要将类名首字母小写即可;然而当Bean对象首字母和第二个字母都是大写时,此时需要原类名才能正确获取到Bean对象

在这里插入图片描述


2.使用Bean方法注解:将返回的对象存储到spring中
在这里插入图片描述


3.为什么需要五个类注解

1.通过类注解可以了解到当前类的用途
2.不同的类注解有不同的地方

五大类注解用途(重点) :
1. @Controller (控制器) :归属于业务逻辑层,用来控制用户的行为,它用来检查用户参数的有效性。
2. @Service (服务) :归属于服务层,调用持久化类实现相应的功能。[不直接和数据库交互的,它类似于控制中心]
3. @Repository (仓库) :归属于持久层,是直接和数据库进行交互的。通常每一个表都会对应一个@Repository。
4. @Configuration (配置) :归属于配置层,是用来配置当前项目的一些信息。
5. @Component (组件) :归属于公共工具类,提供某些公共方法。

在这里插入图片描述


4.从spring中简单读取 Bean对象

有三种方式往spring中注入对象:

1.属性注入
2.setter注入
3.构造方法注入

1.属性注入
在这里插入图片描述
优点:实现简单,(迄今为止应用最为广泛的注入方式)
缺点:1.不能注入不可变对象
2.只适用于IOC容器
3.更容易违背单一设计原则(针对对象是类)


2.setter注入
在这里插入图片描述
缺点:1.不能注入不可变对象
2.注入对象可被修改

优点:更符合单一设计原则。针对对象方法级别


3.构造方法注入
在这里插入图片描述
优点:1.可以注入不可变对象
2.注入对象不会被修改
3.注入的对象会被完全初始化

缺点:书写繁杂,没有属性注入简单


5.@Resource和@Autowired的异同

相同点:

都是用来实现属性注入的

不同点:

1.功能支持不同:@Autowired 支持属性注入、setter注入、构造方法注入;但是@Resource只支持属性、setter注入

2.出身不同:@Autowired来自于spring框架,@Resource来自JDK

3.参数支持不同:@Autowired只支持required参数,@Resource支持更多的参数设置

注意:当Service中出现了多个未重命名的对象时,再去注入对象就会出错
在这里插入图片描述
在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。