Spring IoC&DI

DI 介绍

DI: DependencyInjection(依赖注⼊)

要把某个对象交给IOC容器管理,需要在类上添加⼀个注解: ⽽Spring框架为了更好的服务web应⽤程序,提供了更丰富的注解. 共有两类注解类型可以实现:

  1. 类注解:@Controller、@Service、@Repository、@Component、@Configuration.

  2. ⽅法注解:@Bean.

如何观察这个对象已经存在Spring容器当中了呢? 接下来我们学习如何从Spring容器中获取对象

Bean命名约定
程序开发⼈员不需要为bean指定名称(BeanId),如果没有显式的提供名称(BeanId),Spring容器将为该 bean⽣成唯⼀的名称. 命名约定使⽤Java标准约定作为实例字段名.也就是说,bean名称以⼩写字⺟开头,然后使⽤驼峰式 ⼤⼩写.
也有⼀些特殊情况,当有多个字符并且第⼀个和第⼆个字符都是⼤写时,将保留原始的⼤⼩写.这些规则 与java.beans.Introspector.decapitalize (Spring在这⾥使⽤的)定义的规则相同.
⽅法注解@Bean 类注解是添加到某个类上的,但是存在两个问题: 1. 使⽤外部包⾥的类, 没办法添加类注解 2. ⼀个类,需要多个对象,⽐如多个数据源 这种场景, 我们就需要使⽤⽅法注解 @Bean
⽅法注解要配合类注解使⽤ 在Spring框架的设计中,⽅法注解 @Bean 要配合类注解才能将对象正常的存储到Spring容器中, 如下代码所⽰

关于依赖注⼊,Spring也给我们提供了三种⽅式:

1. 属性注⼊(FieldInjection)

2. 构造⽅法注⼊(ConstructorInjection)

3. Setter 注⼊(SetterInjection)

属性注⼊ 属性注⼊是使⽤ @Autowired 实现的

构造⽅法注⼊ 构造⽅法注⼊是在类的构造⽅法中实现注⼊,如下代码所⽰:

注意事项:如果类只有⼀个构造⽅法,那么@Autowired 注解可以省略;如果类中有多个构造⽅法, 那么需要添加上@Autowired 来明确指定到底使⽤哪个构造⽅法。

Setter 注⼊ Setter 注⼊和属性的Setter⽅法实现类似,只不过在设置set⽅法的时候需要加上@Autowired 注 解,如下代码所⽰:

相关推荐
行者全栈架构师2 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_02 小时前
mac(m5)平台编译openjdk
java
唐青枫1 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
云技纵横1 天前
唯一索引 INSERT 死锁实战:5 秒复现交叉插入的 S 锁循环等待
sql·mysql
沉默王二1 天前
面试官:RAG 不用向量数据库,用 MySQL 硬扛?我:100 万向量不是很轻松?
mysql·面试·ai编程
一个做软件开发的牛马1 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261351 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261351 天前
Java 打印 Word 文档:从基础打印到高级设置
java
小猿姐2 天前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops
用户3521802454752 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程