您的位置:首页 > 游戏 > 游戏 > Spring IOC and DI

Spring IOC and DI

2024/11/19 20:57:19 来源:https://blog.csdn.net/cjmyydsds/article/details/140345942  浏览:    关键词:Spring IOC and DI

1.什么是IOC

(1)在Spring的MVC中我们学习了,让我们知道了将对象如何交给Spring进行管理类

(2)Spring是一个开源框架,是包含众多方法容器的IOC容器

(3)那么什么事IOC,我们可以将他说为,控制翻转的容器(IOC),在我们前面的文章中Spring,用@Contraller和RestContraller将对象交给Spring进行管理,这个就是IOC思想。

(4)IOC控制翻转可以理解为以前你开车用人,现在用人工智能,将你传统的控制车这个对象进行打破。这个就死IOC思想

2.传统思想对其进行开发

(1)在传统的思想中,如果我们要造一辆车,要先造出轮子,根据轮子设计底盘车身,然后组装成一辆车。

代码示例

代码包:

 Bottom类

car类

 Framword类

 NewCarExample类

 Tire类

以上是用传统的思想进行开发,这样的开发是不好的,因为每个类的耦合性是非常高的,如果我想改轮胎尺寸的话就会发现整个代码的体系都要进行修改。 如下图所示。

修改完毕进行运行结果。 

 3.IOC思想进行开发

可以看到传统思想进行开发是非常的不好的,一旦增加需那么整个系统的代码都要进行修改.耦合性非常的高.这时候就要采用IOC的思想来对程序进行开发.也就是控制反转,其中要先声明一点,在传统的开发过程中,car是总的控制.:Car -> Framework -> Bottom -> Tire,

在接下来进行IOC的开发中,我会通过对象的注入来控制整个程序。

各类代码如下

NewCarExample类

Bottom类

 Car类

FranmWork类代码 

Tire是最基本对的类不用修改(在新的思想中还能给Tire给予不同的属性)

 4.IOC控制翻转容器

1.我们在了解了IOC的思想以后就可以明白IOC控制容器,这个可以将容器中的对象进行集中的管理,也就是Spring干的事情,其中我们要知道IOC是一种思想不是一种模型。

在我们知道IOC的概念以后,那么这个容器的最大作用就是拿和取东西

4.1 @Controller、@Service、@Repository、@Component、@Configuration这些都是可以注入元素

其中我们注意的是除了Controller这个其他在源码中并没有很大的区别

5.bean对象的命名

官方给出的解释(下面是网址)

Bean Overview :: Spring Framework

在我们将对象交给Spring的时候,Spring就已经在内部将对象给实例化好了并对其取了名称

类名: UController, Bean的名称为: UController

类名: AManager, Bean的名称为: AManager

(1)首先要先从Spring框架中获取对象的上下文,然后根据命名规则来获取对象

如果你的对象前两个字母大写那么就是原来的名称如果不是,那么就是小驼峰的命名方式

如上的三个输出的地址是一样的那么就说明这个获取的是同一个对象,

(2)一个类中有多个对象的三种不同的获取方式。 下面124三种是用的最多的。

(3) 上面的第四种方法

 在上面的图片中,先要获取Spring容器的搭载环境,当然这个搭载环境也是报扩我们交给Spring管理的类的。也就是ApplicationContesxt这一行代码,然后获取到这个对象这个是第四个方法,这些方法获取到的对象都是同一个。

6.程序接管的注意事项

(1)程序被Spring接管的时候默认路径是启动类的路径(启动类的目录包括子目录)

这个要用五大注释来和@bean这个注释进行使用

7.依赖的注入(三种方式)

在Spring框架中有三种对依赖的注入方式

属性的注入,构造方法的注入,setter方法的注入

7.1构造方法的注入

(1)当只有一个构造方法的时候不需要用@Autowird

(2)如果有多个构造函数,没有使用@Autowird进行注入,那么就会默认使用无参的构造方法,使用了@Autowird,那么就会使用固定的构造方法。

7.2 Setter方法的注入

(1)第一种方式在构造方法中进行赋值

(2)在定义中进行初始化

(3)优缺点对比

 7.3Autowird注入的注意特点

(1)当使用Autowird对对象进行属性的注入的时候

(2)根据名称和类型进行查找,名称为Userinfo 类型为UserInfo

     首先是先到类中找到这个属性进行注入,如果名称查不到那么就会进行报错

7.4@Autowird和@Resouse注入的区别

这两个注解的区别就是,第一个Autowird是由Spring框架进行管理的,然后第二个@Resouse这个是jave的jdk框架自带的注入

其中Aurowied这个是用类的对象进行注入

后面Resouse这个是用名称进行注入

总的来说@Recouse这个是支持更多的参数进行注入

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com