zoukankan      html  css  js  c++  java
  • [刘阳Java]_Spring IoC原理_第2讲

    Spring IoC(DI)是Spring框架的核心,所有对象的生命周期都是由它们来管理。对于弄懂Spring IOC是相当关键,往往我们第一次接触Spring IOC大家都是一头雾水。当然我们这篇文章会通过程序例子的方式来告诉大家。但是我不能说自己就相当专业,如果还有不懂的朋友们建议去看一下Spring的官方文档,或者是参考网上其他的一些博客。

    1. Spring IOC的概念

    • IOC(Inversion of Control,控制反转),所有的Java类(不管是JDK库中Java类,还是你自己定义Java类)都可以利用Spring框架来new它们的实例化对象
    • Spring框架完成对Java类的初始化对象工作
    • Spring来负责控制对象的生命周期和对象间的关系

    2. Spring DI的概念

    • DI(Dependency Injection,依赖注入),它主要作用是动态的向某个对象提供它所需要的其他对象

    3. Spring IoC和DI 它们是否有区别吗?

    • 我个人观点,其实Spring中IOC和DI其实概念一样
    • IOC控制反转,所有的Java类的初始化工作扔给Spring框架。Spring框架充分利用Java反射
    • DI依赖注入,一个Java类如果依赖其他Java类,则此类依赖另一个Java类的初始化工作也扔给Spring框架来完成。例如下面的描述可以帮助再次理解DI的核心功能
      • 你可以通过从MVC分层开发角度去理解一下DI
      • 在开发过程中,大家都知道Controller控制器依赖Service,假设整个Web开发过程中我们使用Spring框架,则Serivce的初始化工作Controller不用关心Service对象是如何创建的,Service创建过程扔给Spring框架
    • DI和IOC程序实现的原理是什么

    4. 上面确实是从我个人角度去理解和告诉大家什么是Spring IOC,下面开始我们的第一个Spring框架的程序。它能告诉你如何编写一个由Spring框架导向的Java程序

    • 运行Spring框架首先要导入Spring相关的开发包。如果使用spring.4.0.3版本导包要包含(spring-core.jar, spring-beans.jar, spring-context.jar, spring-expression.jar, common-logging.jar
    • 创建一个Person的Java类
    public class Person {
        private String name;
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
    }
    • 创建一个Spring的配置文件
    <?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="person" class="com.gxa.spring.day01.Person"></bean>
    </beans>
    • 创建一个测试程序来运行一段由Spring框架所管理的配置文件
    package com.gxa.spring.test01;
    
    import org.junit.Test;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.gxa.spring.day01.Person;
    
    public class Test01 {
        
        @Test
        public void m01() {
            /**
             * 运行Spring框架需要用到BeanFactory
             * 1.BeanFactory帮助我们启动IOC容器
             * 2.帮助我们找到需要实例化Java对象
             */
            BeanFactorybeanFactory = new ClassPathXmlApplicationContext("spring.xml");
            Person person = (Person) beanFactory.getBean("person");
            person.setName("Hello World");
            System.out.println(person.getName());
        }
    }

    5. 上面的第一个Spring框架的代码,我这里简单的说明一下几个关键点

    • 以后我们编写好的Java类都会在Spring的配置文件进行注册
    • Spring配置文件就是一个容器工厂,它会在运行程序的时候检测配置文件中注入的Java类。当检测有Java类在配置文件中,那么Spring框架就会给这些Java类创建对象
    • BeanFactory是Spring框架中的核心接口,在一个Java应用程序运行的时候,它帮助我们启动IoC容器,同时帮助我们找到需要实例化的Java对象
    • 如何找到需要实例化的Java对象呢?通过BeanFactory接口中的getBean(String beanName)方法来实现

    视频下载地址:https://pan.baidu.com/s/1eSDZwFg

  • 相关阅读:
    el-select下拉框选项太多导致卡顿,使用下拉框分页来解决
    vue+elementui前端添加数字千位分割
    Failed to check/redeclare auto-delete queue(s)
    周末啦,做几道面试题放松放松吧!
    idea快捷键
    解决flink运行过程中报错Could not allocate enough slots within timeout of 300000 ms to run the job. Please make sure that the cluster has enough resources.
    用.net平台实现websocket server
    MQTT实战3
    Oracle 查看当前用户下库里所有的表、存储过程、触发器、视图
    idea从svn拉取项目不识别svn
  • 原文地址:https://www.cnblogs.com/liuyangjava/p/6654622.html
Copyright © 2011-2022 走看看