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 注 解,如下代码所⽰:

相关推荐
wadesir1 小时前
Go语言反射之结构体的深比较(详解reflect.DeepEqual在结构体比较中的应用)
开发语言·后端·golang
即将进化成人机1 小时前
springboot项目创建方式
java·spring boot·后端
教练、我想打篮球1 小时前
117 javaweb servlet+jsp 项目中修改了 数据库连接配置, 却怎么都不生效
java·servlet·jdbc·jsp
你不是我我2 小时前
【Java 开发日记】我们来说一说 Redis IO 多路复用模型
java·开发语言·redis
想七想八不如114082 小时前
408操作系统 PV专题
开发语言·算法
SadSunset2 小时前
(13)复杂查询
java·笔记·架构·mybatis
浩瀚地学2 小时前
【Java】ArrayList
java·开发语言·经验分享·笔记
cui_win2 小时前
MySQL max_connections连接数配置没生效,最终靠改这个参数解决
数据库·mysql