美文网首页
Spring IOC(Inversion of Control)

Spring IOC(Inversion of Control)

作者: ChinaGoodStaff | 来源:发表于2023-05-16 19:04 被阅读0次

IoC的理解

ioc也叫控制反转,所谓的控制,就是把对象交给ispring容器进行管理,反转则是对象交给了容器以后,对象之间相互调用,不需要再new出一个新的对象,只需要注入就好了
把创建和查找依赖对象的控制权交给 IoC 容器,由 IoC 容器进行注入、组合对象之间的关 系。这样对象与对象之间是松耦合、功能可复用(减少对象的创建和内存消耗),使得程序 的整个体系结构可维护性、灵活性、扩展性变高。 所谓IOC ,就简短一句话:对象由 spring来创建、管理,装配!

IoC遵循的原则

接口分离原则ISP(the Interface Segregation Principle ISP)

模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来

依赖倒置原则DIP(the Dependency Inversion Principle DIP)

具体实现依赖抽象,下层依赖上层

IOC是DIP的设计原理,DI是IOC的具体实现

IoC的代码实现

1.导入jar包+配置xml

入门搭建基于ioc的spring
需要导入的核心包

Beans
Core
Context
expression-sPex

配置xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean class="com.company.dao.impl.UserDaoOracleImpl" id="userDaoOracle" />
    <bean class="com.company.service.impl.UserServiceImpl" id="userService" >
        <property name="dao" ref="userDaoOracle"></property>
    </bean>
</beans>
2.maven+注解+配置xml

配置maven依赖,到pom.xml中

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cn.lll</groupId>
    <artifactId>spring_ioc</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.18</version>
    </dependency>
    </dependencies>
</project>

添加spring配置文件spring_ioc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean class="cn.lll.beans.User" id="user">
    </bean>
</beans>
 publicclassIocTest{

        @Test
        public void test01(){
            ApplicationContext ioc=new ClassPathXmlApplicationContext("spring‐ioc.xm
                    l");
                    User bean = ioc.getBean(User.class);
            System.out.println(bean);

        }
    }
3.springBoot+javaconfig

最厉害的实现方式,Spring3.0以后开始支持不需要xml配置文件的,可以使用javaconfig配置来代替xml配置定义外部bean
从Spring4.0开始支持springboot1.0之后,springboot完全采用javaconfig的方式进行开发

DI与IOC

很多人把IOC和DI说成一个东西, 笼统来说的话是没有问题的,但是本质上还是有所区别的,IOC和DI是从不同的角度描述的同一件事,I0C是从容器的角度描述,而DI是从应用程序的角度来描述,也可以这样说,I0C是依赖倒置原则的设计思想,而DI是具体的实现方式

IOC的优点

  1. 集中管理
  2. 功能可复用(减少对象的创建和内存消耗)
  3. 使得程序的整个体系结构可维护性、灵活性、扩展性变高
4. 解耦

相关文章

  • web填坑日记-Spring(1)

    Spring IOC(控制反转) IOC理论背景 IOC(Inversion of Control,控制反转 )...

  • Spring IOC学习笔记

    1 Spring的IOC理解 Spring IOC 思想的理解: Inversion of Control 控制反...

  • 2018-06-08

    IOC 容器 IOC容器和beans Spring实现了IOC (Inversion of Control)(控制...

  • Spring要点

    1.spring IOC AOP原理: IoC(Inversion of Control): IoC就是应用本身...

  • 7

    Spring: 1、IOC,AOP IOC:Inversion of Control,控制反转 AOP:Aspec...

  • Spring IOC 实现原理

    Spring IOC 实现原理 IOC: Inversion of Control ,即 "控制反转" , 不是什...

  • Spring IOC的原理及详解

    1 IoC原理 1.1 IOC ( Inversion of Control ) :控制反转 ➢ Spring C...

  • Spring 核心 AOP 及 IOC 详解

    IOC : Inversion of Control (1). IoC(Inversion of Control)...

  • spring IoC入门

    spring Ioc概念 IoC是什么 Ioc—Inversion of Control,即“控制反转”,不是什么...

  • Spring框架的IOC和AOP

    spring框架 Ioc(Inversion of Control)控制反转,在spring中BeanFactor...

网友评论

      本文标题:Spring IOC(Inversion of Control)

      本文链接:https://www.haomeiwen.com/subject/bcsbsdtx.html