Spring的IOC

    今天来说说spring的IOC,控制反转。

   原先开发大致  如下图:

     在以前的开发中,创建什么样的资源是由功能来决定的,  这样耦合性过高,改动其中一个,那么另外一个也需要修改。比如资源1是service,资源2是dao,他们两合起来,才可以促成这个功能。这就导致了耦合度过高的问题。

     spring开发大致 如下图:

      


     现在出现了spring框架,功能就不需要直接去找资源了,功能找spring索取资源,spring去管理资源。把资源的控制的权力由原来的功能,给到了spring框架,这个就是控制反转。

     ioc编写过程大致 如下图:

     


     ioc编程,

1.APP直接和资源编码的话,耦合度过高。

2.加入了工厂之后,APP找工厂,面对接口编程,但是资源和工厂的耦合度就高起来了。

3.在加入xml配置,APP找工厂,工厂会根据xml文件,来判断哪个资源需要spring来管理,xml就直接对资源了。

Spring IOC(Inversion of Control,控制反转)是Spring框架的核心组件之一。IOC的主要思想是通过将对象的创建和依赖管理交给容器来完成,而不是由程序手动管理和实例化。 ### 什么是IOC? 传统的应用程序中,我们通常会直接使用`new`关键字去创建对象,并手工处理它们之间的依赖关系。而Spring IOC则改变了这种方式——它负责创建、配置并维护这些对象的关系。开发者只需要告诉容器需要哪些Bean以及如何装配它们即可。 #### 核心概念: 1. **IoC容器** IoC容器就是指管理Bean生命周期及注入过程的一个核心部分,在Spring中有两个主要实现形式: - `ApplicationContext` - `BeanFactory` 2. **Bean** Bean是由Spring IoC容器初始化、配置和管理的对象。所有被Spring管理的对象都被称为“Beans”。每个Bean都有一个唯一的ID或名称标识符。 3. **DI (Dependency Injection)** DI即依赖注入,它是IOC的具体实践方式之一。依赖注入表示外部环境按照一定的规则自动地为某段代码提供其所需的资源和服务。常见的几种注入模式包括构造函数注入、Setter方法注入等。 4. **配置元数据** 开发者可以采用XML文件、注解(Annotation)或者基于Java类的方式向Spring描述各个Bean及其相互间的关系。 --- ### 使用示例: ```java // 定义Service层的接口 public interface MyService { void execute(); } // 实现该接口的服务类 @Component // 声明这是一个Spring Bean public class MyServiceImpl implements MyService { @Override public void execute() { System.out.println("Executing service..."); } } ``` 然后在另一个地方可以直接注入这个服务类作为依赖项: ```java @Service // 将当前类注册成Spring Bean public class AnotherComponent { private final MyService myService; @Autowired // 自动装配MyService类型的bean到myService字段上 public AnotherComponent(MyService myService){ this.myService = myService; } public void performAction(){ myService.execute(); // 调用实际业务逻辑 } } ``` 上述例子展示了利用Spring Boot提供的`@Component`, `@Service` 和 `@Autowired` 注释简化了传统繁琐的手工编码操作步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值