JAVA(Spring)学习笔记--->控制反转、依赖注入

1:Spring资源目录(resource)的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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/aop
                           http://www.springframework.org/schema/aop/spring-aop.xsd">

</bean>

2:控制反转IoC(Inversion of Control)

2.1:什么是控制反转?

        控制反转就是将程序控制权由对象交给了交给容器,控制反转也是一个解耦合的过程(笔者通过一个在网上看到例子来说明)

                           

解耦合:

传统的程序就像第一幅图一样,齿轮是彼此依赖的,如果一个齿轮出故障不转动了,整个程序就崩溃了,这就代表这耦合度过高;

控制反转就相当于第二幅图的第三方齿轮,其中一个齿轮就算出故障了,整个程序也不会崩溃,这就是所谓的解耦合;

 控制反转的由来?

第二幅图就中的第三方就是IOC容器,控制权就在它手里,如果A对象需要一个D对象,但是因为第三方IOC容器的介入失去了与D对象的联系,那么A对象就会告诉IOC容器(第三方)我需要一个D对象,那么IOC容器就会将D对象创建并注入到A对象需要的地方,这时候就体现出了控制权在IOC手中。而第一幅图中,A对象需要一个D对象,他就会自己创建并添加 到自己需要的地方,控制权在自己手上。

综上所述:控制权由对象自己手上交给IOC容器来获得控制权,这就叫控制反转

2.2什么是依赖注入?

在博主看来依赖注入:就是给IOC容器创建赋予(注入属性,接下来博主会给大家看一段代码来加深大家的理解

创建一个Person类

package com.kaifamiao.ioc.what;

import java.util.Calendar;
import java.util.Date;

/**
 * @author 后来的老李
 * @version 1.0
 */
public class Person {

    //Person类的属性
    //get和set
    //无参构造和有参构造
    //toString
}

添加resouce资源目录下的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 id="date" class="java.util.Date">
        <constructor-arg type="long" value="946569600000"></constructor-arg>
    </bean>
    <bean id="person" class="com.kaifamiao.ioc.what.Person">
        <property name="id" value="2022"></property>
        <property name="personName" value="李唐天子李星云"></property>
        <property name="gender" value="男"></property>
        <property name="birthdate" ref="date"></property>
    </bean>
</beans>

在XML文件中bean就是一个对象,这就是控制反转,开始第一段代码的Person是个类,现在IOC容器将会给我们创建对象(李唐天子李星云),而传统的我们要通过类去创建一个对象就需要去new一个对象(Person p=new Person()),然后再设置对象的属性,而依赖注入就是<property name="personName" value="李唐天子李星云"></property>,也就相当于p.setName(李唐天子李星云),一个意思,但是两者的不同在于,传统的是对象自己去赋值,而依赖注入是IOC容器创建好了对象,在给对象的属性注入值,所谓依赖就是对象所需要的值是通过依赖IOC容器注入的。

注意:控制反转是一种思想,依赖注入是一种模式,两者不能混为一谈。

以上是笔者自己的见解,有问题希望大家留言纠正;

星光灿烂,愿我们一同前行!


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值