《Spring揭秘》重置版——IoC注入及绑定01

《Spring揭秘》重置版——IoC注入及绑定01,第1张

上次在解决莫名的sql语句的时候,突然发现自己能领会到spring深层次一些的东西了😀。但是又了解的不多,之前大学学过但是可能用的不深入,大多都忘完了😅。突然就感觉,哦,是时候深入系统学习了😁

在查找了一些资料后,我找到了这个豆瓣评分很高但又绝版很贵且很老的书。

如果一年前,我或许不会阅读这么老的书。我会想,嘿,girl。那里的东西都过时了,我们还是去找找新家伙吧😂。但是最近不知道怎么的,我觉得其实本质思想虽有变化,但是还是有许多保留的🎈。

读一些经典的书,也是很棒的。😎

那,就让我们一起开始这场冒险之旅吧~😉

文章目录
  • IoC是什么
    • IoC的理念
    • IoC注入方式
        • 构造方法注入
        • setter注入
        • 接口注入
    • IOC作用
  • IoC Service Provider
    • 管理对象间的依赖关系
          • 1 配置文件
          • 2 元数据方式

IoC是什么 IoC的理念

让专人为你服务。而不是你事必躬亲。

IoC注入方式

事必躬亲是这样的:

如何通知专人?

有三种方式,分别是构造方法注入、setter注入、接口注入

构造方法注入

前两种这样听,可能不理解。但是如果换种描述你可能会豁然开朗。构造方法注入,就是将注入的对象当做类的一个属性,然后在构造函数里,用this赋值

setter注入

将对象作为类的一个属性,然后为其赋值。

接口注入

我看了网上目前流行的java代码,和我们公司前辈写的。貌似不需要配置文件了。而且看起来还挺好用的。

在我看来,这大致是用于不清楚调用类的情况。

代码类似这样

#先获取bean的名字
String beanId = teacher;
#然后获取相应bean的对象
Object object = applicationContext.getBean(beanId);
#然后用接口去向上转型(应该是这个说法吧)
Person person = (Person)object;
#然后person调用的就是teacher的方法啦

我认为这里机器类似于向上转型,你可以这样理解:

package 接口依赖注入;

public interface Person {
	String getPerson(String name);
	
}
package 接口依赖注入;

public class Teacher implements Person{
	public String getPerson(String name) {
		return name;
	}

}
package 接口依赖注入;

public class MainTest {
	public static void main(String[] args) {
		Teacher teacher = new Teacher();
		Person person = (Person)teacher;
		System.out.println(person.getPerson("小红"));

	}
}

IOC作用

帮助我们解耦各业务对象间依赖关系:因为我们本来是直接调用对象,现在对象继承接口一致就可以了。

IoC Service Provider

在Ioc是什么里可以看到,如何注入。但是注入的是个对象,那么肯定需要先有这个对象,即new。

不想new怎么办呢?IoC Service Provider来帮忙啦~

IoC Service Provider有两个作用:业务对象的构建管理和业务对象间的依赖绑定。

单听这两个词是比较晦涩的,起码菜鸡作者这么认为。

但是如果这样呢?我们回到new 对象。他看似只有一步 *** 作,其实是两步。

  • 1 选定一个要注入的类(业务对象间的依赖绑定)

  • 2 在类里面new一个要注入的对象 (业务对象的构建管理)

管理对象间的依赖关系

有三种:直接编码、配置文件、元数据。第一种我没有见过,就不班门弄斧了,下面了解一下后两种。

1 配置文件

不知道你是否有什么不美好的回忆出现。最新的spring一般都用注解代替了。

但是老版本的spring,你如果忘了一个配置文件,那也算是一场小灾难了吧。

空指针,业务无法进展,怎一个惨字了得。具体配置类似这样。

2 元数据方式

这样说,可能陌生些。但回想一下满目的@Autowired,是不是熟悉很多呀

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/720752.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存