谈谈自己对IOC容器的理解(一)

编程入门 行业动态 更新时间:2024-10-27 01:28:46

谈谈自己对IOC<a href=https://www.elefans.com/category/jswz/34/1771431.html style=容器的理解(一)"/>

谈谈自己对IOC容器的理解(一)

初学Java时,了解到Java是一门面向对象的语言。我感觉Java这面向对象好废,啥都要我自己弄。这跟C语言有啥区别,感觉Java也就这样了,完全体会不到面向对象的感觉,处处都是“面向过程”。网上总说面向对象修房子是去找专门修房子的人来修,面向过程是自己亲力亲为的去修。可是去找修房子的人也得有个过程,不可能无缘无故的就来了一个修房子的吧!自从接触了Spring IOC,我才知道修房子的人也会自己找上门来,不要我去找了,真nice!

1.IOC基本概念

IOC全称为Inversion of Control,翻译为控制反转,别名又叫依赖注入(DI)。从字面上你会发出疑问,IOC控制什么?反转什么?依赖又是啥东西?。
没办法文明人说话就是这么高端大气上档次。平时写Java写的最多的是什么?肯定是对象了。要不然叫啥面向对象,这不开玩笑吗?
自从有了IOC,我连对象都new不了,这脱单咱办呢?本以为没有对象,还可以new一下对象,以解忧愁。这下倒好了,我负责脱发,他负责找对象。
IOC控制: 控制的是对象的创建和管理。
IOC反转: 反转的肯定是对象,要不然对象都没了,你还能搞啥。有点像中介。
依赖: 你就是我这辈子的依赖啊!你总得告诉它你需要什么样的“女朋友”。

2.IOC的作用

苍茫的天涯,总有我的爱!就是不知道在哪里,对象new多了,都不知道那里new过对象,最近又要换个对象,以前对象怎么办,总不能占着茅坑不拉屎。所以IOC来了,来了,从此君王不早朝(我终于知道为啥每天加班)。
IOC的主要作用是: 解耦。
解耦,是降低程序耦合度,也就是减少程序代码之间的依赖性,如果代码之间的依赖性很高,修改一处代码会影响很多其他的代码,这就给项目的稳定性带来的问题,不利于代码的扩展和维护。

3.简单的实现

1.创建一个Maven
2.导入依赖
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.8.RELEASE</version>
</dependency>
3.编写代码

写一个接口:

//后宫
public interface Harem {void nafei(String name);
}

一个实现类:

//纳谁
public class Person implements Harem{@Overridepublic void nafei(String name) {System.out.println("我要纳"+name+"为妃");}
}
4.实现
4.1添加Spring配置文件

在resources目录下,添加Spring配置文件。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=""xmlns:xsi=""xsi:schemaLocation=" .xsd"><bean id="person" class="com.demo.Person"></bean>
</beans>


编写一个测试类:

 public static void main(String[] args) {//创建上下文ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("ioc.xml");//获得对象Person bean = context.getBean(Person.class);bean.nafei("妲己");}

最后可以得到这样的一个结果:

4.2注解实现IOC

给接口的实现类加上@Component注解。

//纳谁
@Component
public class Person implements Harem{@Overridepublic void nafei(String name) {System.out.println("我要纳"+name+"为妃");}
}

编写一个测试类:

@Configuration
public class Test {public static void main(String[] args) {//创建注解应用程序上下文AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Test.class);//获得对象Person bean = context.getBean(Person.class);bean.nafei("妲己");}
}

结果:

两种方式感觉注解版要方便一点。

5.参考资料

1.《Spring揭秘》
2.Spring框架(一) IOC


如有错误,还望指出!

更多推荐

谈谈自己对IOC容器的理解(一)

本文发布于:2023-07-28 17:48:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1267154.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:容器   IOC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!