Spring - IoC

本文详细阐述了Spring框架中控制反转(IoC)的概念、作用及实现方式,解释了为何通过配置文件创建对象及其依赖关系更为高效,展示了IoC如何简化资源管理并提升代码的可维护性。

目录

1、概念

2、为什么要通过配置来做对象的建立及其依赖关系呢?

3、怎么实现对象及其依赖关系的创建呢?

4、控制反转IoC有啥好处?

5、具体实现


从今天开始,阅读资料,整理Spring框架的知识。

Spring框架:截止目前Java最流行的框架,最主要的思想是控制反转(IoC, inversion of Control)面向切面(AOP, Aspesct Oriented Programming).

这一篇主要了解控制反转IoC。


1、概念

IoC本质是一个容器。Spring通过IoC这个容器,依靠描述(配置文件)来实现对象的创建及其依赖关系。

 


2、为什么要通过配置来做对象的建立及其依赖关系呢?

来想象一下,对于某一类的事物,可以定义一个接口,这类事物有一些子类,可以定义相应的子类。比如糖,有冬瓜糖、西瓜糖、南瓜糖等等。假设我想吃的是冬瓜糖,通过程序的方式,一般是如下这样使用的:首先定义接口下的某一类的具体对象,然后去使用这个具体对象。

// 吃糖,吃冬瓜糖,代码逻辑

Candy candy = new CandyWintermelon();
user.setCandy(candy);
user.useCandy();

但是这样就有一个问题,如果我又想吃南瓜糖了怎么办?是不是需要又需要再去申明一个南瓜糖的对象呢?答案是肯定的,必须再次申明一个南瓜糖的对象,才能实现我又想吃南瓜糖的逻辑。其实这看起来也还好,因为也就才多生成一个对象而已,感觉也不费事。不过想象一下:一个大型互联网的对象是成千上万的,如果需要不断创建、修改新的对象,那么将会出现很大的问题

因此,Spring提出了使用IoC来实现对象及其依赖关系的创建,其目的就是为了实现对象及其依赖关系创建的快捷和方便。

 


3、怎么实现对象及其依赖关系的创建呢?

方式:用户编写配置文件(一般是XML形式),IoC容器通过这个配置文件去找到相应的对象和依赖关系,然后向用户注入找到的内容。

简单理解:这就是用户提供一个买货清单,然后IoC通过这个清单找货、卖货、送货的过程。其实挺简单的。控制反转的含义就是用户只需要提供用户的需求描述信息,而需求的资源是可以通过需求描述信息在IoC容器中找到的,负责寻找的是IoC容器(拥有控制权的是IoC容器),而不再是用户了,所以叫做控制反转。

 

示例:

使用Spring IoC注入南瓜糖给用户,XML配置文件。

// IoC配置文件

<bean id = "candy" class ="CandyWintermelon" / >
<bean id = "user" class ="xxx.user"  >
        <property name = "candy" ref = "candy"/>
</bean>

4、控制反转IoC有啥好处?

1、想要增加、修改资源不需要再去new对象,想要修改依赖关系也可以通过配置完成,可以即插即拔的管理对象及其关系;

2、把Bean之间的关系解耦了,更容易写出逻辑清晰的代码;

3、提供对Java Bean生命周期的管理,可以延迟加载,在生命周期内定义行为等。能够方便地使用、管理Java资源。

 


5、具体实现

参考:https://blog.youkuaiyun.com/weixin_44823472/article/details/97787171?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.compare

Spring-IOCSpring框架的核心部分之一,它是一种设计模式,全称为Inversion of Control(控制反转)。它通过将对象的创建、依赖关系的管理和对象的生命周期交给Spring容器来实现,从而降低了组件之间的耦合度,提高了代码的可重用性和可维护性。Spring-IOC的实现主要依靠Spring容器,Spring容器是Spring框架的核心,它负责创建、管理和装配Bean对象,其中Bean是Spring框架中最基本的组件。 Spring-IOC的实现主要有两种方式:BeanFactory和ApplicationContext。其中,BeanFactory是Spring-IOC的基本实现,而ApplicationContext是BeanFactory的子接口,提供了更多高级特性。ApplicationContext是Spring框架中最常用的IOC容器,它除了提供BeanFactory的所有功能外,还提供了更多的企业级特性,例如AOP、事务管理、国际化、事件传播等。 下面是一个简单的Spring-IOC的例子,假设我们有一个UserService接口和一个UserServiceImpl实现类,我们可以通过Spring-IOC容器来创建和管理UserServiceImpl对象: 1.定义UserService接口和UserServiceImpl实现类 ```java public interface UserService { void addUser(User user); } @Service public class UserServiceImpl implements UserService { @Override public void addUser(User user) { // 添加用户的具体实现 } } ``` 2.在Spring配置文件中配置UserService实例 ```xml <bean id="userService" class="com.example.service.UserServiceImpl"/> ``` 3.在代码中获取UserService实例并使用 ```java ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService = context.getBean("userService", UserService.class); User user = new User(); userService.addUser(user); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值