Spring基础篇:基于注解的依赖查找和依赖注入(IOC)

简介: 基于注解的依赖查找和依赖注入(IOC)
话说上回,上篇文章介绍了使用XML的方式做依赖注入。

快速回顾:主要是使用配置文件实现属性成员的依赖注入,这样做的好处是:解耦

<bean id="person" class="juejin.di.bean.Person">
    <property name="pet" ref="dog"></property>
    <property name="name" value="Chengyunlai"></property>
</bean>

该篇再分享一下注解的依赖注入以及依赖查找方面的内容。

注解版的依赖查找

回想一下,注解版定义bean是在配置类(@Configuration)中使用@Bean标注方法,方法通过New的方式得到需要的bean

@Bean
public Person person(){
    Person person = new Person();
    return person;
}
  • 对标XML的普通属性注入(value):

其实直接调用该类的setter方法即可。

    Person person = new Person();
    person.setName("Chengyunai"); //setter注入
    return person;

这时候会产生一个问题,虽然是调用了setter注入,但是这还是在代码中,属于硬编码的范围,但是Spring提供了读取外部properties文件的配置。见我这篇文章 Spring基础篇:利用注解将外部Properties属性注入到Bean中的方法 - 掘金 (juejin.cn)

这样就解决了硬编码的问题,同时做了代码解耦。

  • 对标XML的类成员属性注入(ref)

其实也非常简单,主要还是调用setter方法,但是注入的内容是Spring管理的bean

@Bean
public Pet pet(){
    Pet dog = new Dog();
    return dog;
}

上面的代码,是Spring管理了一个Pet类,我们在Person中注入时应该是这样,直接调用定义好的方法即可。

@Bean
public Person person(){
    Person person = new Person();
    person.setPet(pet()); // 直接调用上面定义的方法即可
    return person;
}

依赖查找

依赖查找其实是主动声明出Spring容器的上下文,声明后向容器中去查询内容。
它的核心内容是:

这个例子以读取配置文件的方式;读取配置类则使用:AnnotationConfigApplicationContext

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("xxx.xml");
Person person = ctx.getBean(Person.class);

它有两个动作:

  1. 读取配置文件,通过方法得到上下文。
  2. 通过上下文拿到其中的bean

注意,通常依赖查找是直接查出Spring管理的bean,它无法做一些属性注入的内容,所以配置时应该要将依赖注入和依赖查找搭配使用。相比较的话,依赖注入还有很多其他的使用方法,可以实现类与类之间的关联,所以依赖注入会用的更频繁。

目录
相关文章
|
10天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
136 73
|
7天前
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
96 69
|
5天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
40 21
|
12天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
10天前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
10天前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
|
10天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
5月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
7月前
|
XML Java 数据格式
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
54 1
|
4月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
283 18