了解IOC控制反转 Inverse Of Control

一、IOC控制反转

1.什么是IOC
  • IOC控制反转,全称Inverse of Control,是一种设计理念
  • IOC是设计理念,是现代程序设计遵循的标准,是宏观目标
2.IOC的核心理念
  • 核心理念:由原本的业务具体对象对依赖的控制转为Spring容器对依赖的控制
3.IOC的作用
  • IOC的作用是降低对象之间的直接耦合
  • 加入IOC容器将对象统一管理,让对象关联变为弱耦合,即——解耦

二、DI依赖注入

  • DI(Dependency Injection)是具体技术实现,是微观实现
  • DI在Java中利用反射技术实现对象注入(Injection)

三、Spring介绍

1.Spring含义:
  • Spring可以从广义和狭义两个角度来看,广义上的Spring是指Spring生态体系,狭义上的Spring是指Spring框架(Spring Fremework)
2.狭义上的Spring框架
  • Spring框架是企业开发复杂的一站式解决方案
  • Spring的框架核心是IOC容器和AOP面向切面编程
  • Spring IOC 负责创建和管理系统对象,并在此基础上扩展功能
3.广义上的Spring框架
  • 广义上的Spring框架是Spring解决开发一整套解决方案,它不单单指SpringMVC或是SpringBoot
4.Spring IOC容器职责
  • 对象的控制权由第三方统一管理(IOC控制反转)
  • 利用Java反射技术实现运行时对象创建与关联(DI依赖注入)
  • 基于配置提高应用程序的可维护性与可扩展性
5.Spring IOC 使用案例
package com.learn.spring.ioc.entity;

import lombok.Data;

/**
*
* Apple Bean
*/
@Data
public class Apple {
    private String title;
    private String color;
    private String origin;

    public Apple() {
    }

    public Apple(String title, String color, String origin) {
        this.title = title;
        this.color = color;
        this.origin = origin;
    }
}


package com.learn.spring.ioc.entity;

import lombok.Data;

/**
*
* Chhid Bean
*/

@Data
public class Child {
    private String name;
    private Apple apple;

    public Child() {
    }

    public Child(String name, Apple apple) {
        this.name = name;
        this.apple = apple;
    }

    public void eat(){
        System.out.println(name + "吃到了" + apple.getOrigin() + "种植的" + apple.getTitle());
    }
}
<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

<!--  在IOC容器启动的时候,自动由spring实例化Apple对象,并取名sweetApple放入到容器中  -->
<bean id="sweetApple" class="com.learn.spring.ioc.entity.Apple">
    <property name="title" value="红富士"></property>
    <property name="origin" value="欧洲"></property>
    <property name="color" value="红色"></property>
</bean>

    <bean id="sourApple" class="com.learn.spring.ioc.entity.Apple">
        <property name="title" value="青苹果"></property>
        <property name="origin" value="中亚"></property>
        <property name="color" value="绿色"></property>
    </bean>

    <bean id="softApple" class="com.learn.spring.ioc.entity.Apple">
        <property name="title" value="金帅"></property>
        <property name="origin" value="中国"></property>
        <property name="color" value="黄色"></property>
    </bean>

</beans>
package com.learn.spring.ioc;

import com.learn.spring.ioc.entity.Apple;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringApplication {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        Apple sweetApple = context.getBean("sweetApple", Apple.class);
        System.out.println(sweetApple.getTitle());

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值