Spring之IOC
Posted Welcome
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring之IOC相关的知识,希望对你有一定的参考价值。
Spring之IOC(一)
对于Spring的基本概念在这里就不在赘述了。
Spring的最核心的两部分则是AOP(面向切面编程)和IOC(控制反转)。本篇文章主要讲我对IOC的理解。
IOC:即Inversion of Control,控制反转。首先,IOC不是一种技术,而是一种思想。我们可以把IOC模式看做是工厂模式的升华,可以把IOC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用Java 的"反射"编程,根据XML中给出的类名生成相应的对象。从实现来看,IoC是把以前在工厂方法里写死的对象生成代码,改变为由XML文件来定义,也就是把工厂和对象生成这两者独立分隔开来,以提高系统的性能。
那么说到这里到底什么是IOC(控制反转)呢?
之前我们创建对象的时候就是new,是由程序进行对象的创建。而IOC是一个创建对象的容器,即IOC容器控制对象的创建。
我觉得控制反转就是对象创建任务的转移。之前是我们主动创建对象,而现在创建对象交给IOC容器进行操作,我们只需要使用创建好的对象。之前是我们控制着对象的创建,现在由IOC进行控制。
为什么要使用IOC?
软件开发追求的是高内聚、低耦合。
现在有一个User类,类中有一个非静态方法say();
publicclass User {
publicvoid say(){
System.out.println("hello world");
}
}
在另一个类中需要使用这个类中的方法,则首先要创建User类的对象,通过对象调用say方法,之前我们进行对象的创建都是直接new的,
publicclass Main {
publicstaticvoid main(String[] args) {
User user = new User();
user.say();
}
}
但如果我们在创建对象的时候使用的是这种new的方式进行创建,一个类中有另一个类的实例,类与类之间的联系过于紧密,耦合度过高,如果某一个类进行了修改,可能会引起很多类的修改,对于一个项目来说,不但增加了开发的难度,对后期的测试以及维护也是十分困难的。但spring中的IOC创建对象不是通过new的方式实现,而是交给spring进行配置创建对象,就是把对象的创建交给Spring进行管理。使用把对象的创建交给IOC的话,类和类之间的耦合度会极大的降低,需要别的类对象的时候,IOC会主动创建对象并且加到需要的地方。
对于IOC的底层原理,以后攻读Spring源码的时候会写一些。
以上仅是一个菜鸟的个人理解,有些偏颇。刚刚写博客,语无伦次。感谢您耐心的看完,谢谢。
以上是关于Spring之IOC的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot脚手架项目002-004.Spring IOC_权限管理系统_Spring:什么是IOCSpring Bean注入SpringBean的注解bean的加载流程
Springday02 jabcTemplate注解IOC创建对象注解IOC注入注解 IO生命周期纯注解IOCSpring-junitAOP-JDK和CGLIB动态代理
JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)Spring整合web开发整合Junit4测试