一步迅速了解Spring框架的几个特点

一,**特点1:**IOC(控制反转)

1,IOC是什么

反转控制"(Inverse of Control) 不是什么技术,而是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理

2,IOC的作用

IOC 容器负责对象的实例化、对象的初始化,对象和对象之间依赖关系、 对象的销毁、对外提供对象的查找等操作,对象的整个生命周期都是由容器来 控制
我们需要使用的对象都由 ioc 容器进行管理,不需要我们去手动通过 new 的方式去创建对象,由 ioc 容器直接帮我们组装好,当我们需要使用的时候直 接从 ioc 容器中直接获取就可以了。
正控: 若要使用某个对象,需要 自己去负责对象的创建
反控: 若要使用某个对象,只需要 从 Spring 容器中获取需要使用的对象**,** 不关心对象的创建过程,也就是把创建对象的控制权反转给了 Spring 框架.

3,IOC在Spring中所运行创建对象等操作的流程

二,特点2:Spring Bean 管理

对于 Spring Bean 管理有两种方式

1,一般的基于 xml 配置方式

bean 配置需要 spring 管理的类
id 生成的对象名
class 全类名
name 对象别名,可以为多个
scope:
**singleton(默认值):**在 Spring 中只存在一个 bean 实例, 单例模式.
**prototype:**原型 getBean()的时候都会 new Bean()
**request:**每 次 http 请 求 都 会 创 建 一 个 bean, 仅 用 于 WebApplicationContext 环境

2,Xml 配置方式依赖注入【DI:Dependency Injection】

指 Spring 创建对象的过程中, 将对象依赖属性(简单值,集合,对象)通
过配置设置给该对象
实现 IOC 需要 DI 做支持
注入的方式:
set 方法注入
构造方法注入
注解方式实现
开启注解扫描
< context :component-scan base-package ="包名" > </ context :component-scan >
注解创建对象
@Component(value="user")等同于 <bean id="user" class=""></bean>
@Service
@Repository
以上注解都可以实现创建对象功能,只是为了后续扩展功能,在不同的层使用不
同的注解标记
@Scope(value="prototype") 原型
@Scope(value=" singleton ") 单例
注解方式注入【DI:Dependency Injection】
@Autowired
@Autowired 是 Spring 提供的注解,可以写在字段和 setter 方法上。如果写在
字段上,那么就不需要再写 setter 方法。默认情况下它要求依赖对象必须存在,
如果允许 null 值,可以设置它的 required 属性为 false。 byType 自动注入
该注解默认使用按类型自动装配 Bean 的方式。
byName 自动注入
如果我们想使用按照名称(byName)来装配,可以结合@Qualifier 注解一起
使用。
需要在引用属性上联合使用注解@Autowired 与@Qualifier。@Qualifier 的
value 属性用于指定要匹配的 Bean 的 id 值。
JDK 注解@Resource 自动注入
S pring 提供了对 jdk 中@Resource 注解的支持。@Resource 注解既可以按名
称匹配 Bean,也可以按类型匹配 Bean。默认按照 ByName 自动注入
byName 注入引用类型属性
@Resource 注解指定其 name 属性,则 name 的值即为按照名称进行匹配
的 Bean 的 id。
注解与 XML 的对比
注解优点: 方便,直观,高效(代码少,没有配置文件的书写那么复杂)。
注解缺点: 以硬编码的方式写入到 Java 代码中,修改是需要重新编译代码的。
xml 优点是: 配置和代码是分离的,在 xml 中做修改,无需编译代码,只需重
启服务器即可将新的配置加载。
xml 的缺点是: 编写麻烦,效率低,大型项目过于复杂

相关推荐
曾令胜12 小时前
excel导出使用arthas动态追踪方法调用耗时后性能优化的过程
spring·性能优化·excel
.格子衫.12 小时前
Spring Boot 原理篇
java·spring boot·后端
多云几多13 小时前
Yudao单体项目 springboot Admin安全验证开启
java·spring boot·spring·springbootadmin
摇滚侠14 小时前
Spring Boot 3零基础教程,Spring Intializer,笔记05
spring boot·笔记·spring
Jabes.yang15 小时前
Java求职面试实战:从Spring Boot到微服务架构的技术探讨
java·数据库·spring boot·微服务·面试·消息队列·互联网大厂
聪明的笨猪猪15 小时前
Java Redis “高可用 — 主从复制”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
兮动人15 小时前
Spring Bean耗时分析工具
java·后端·spring·bean耗时分析工具
MESSIR2215 小时前
Spring IOC(控制反转)中常用注解
java·spring
摇滚侠15 小时前
Spring Boot 3零基础教程,Demo小结,笔记04
java·spring boot·笔记
华洛16 小时前
公开一个AI产品的商业逻辑与设计方案——AI带来的涂色卡自由
前端·后端·产品