栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring (二) --------- IoC 控制反转

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring (二) --------- IoC 控制反转

目录

一、简介二、依赖三、IoC 的实现四、第一个 Spring 程序

1. 使用Spring框架创建自定义类型对象2. 使用 Spring 框架创建非自定义类型对象3. 容器接口与实现类


一、简介

控制反转 (IoC,Inversion of Control),是一个概念,是一种思想。指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。通过容器实现对象的创建,属性赋值,依赖的管理。

IoC 是一个概念,是一种思想,其实现方式多种多样。当前比较流行的实现方式是依赖注入。应用广泛。

二、依赖

classA 类中含有 classB 的实例,在 classA 中调用 classB 的方法完成功能,即 classA 对 classB 有依赖。

三、IoC 的实现

依赖注入:DI(Dependency Injection),程序代码不做定位查询,这些工作由容器自行完成。

依赖注入 DI 是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。

Spring 的依赖注入对调用者与被调用者几乎没有任何要求,完全支持对象之间依赖关系的管理

Spring 框架使用依赖注入(DI)实现 IoC。

Spring 容器是一个超级大工厂,负责创建、管理所有的 Java 对象,这些 Java 对象被称为 Bean。

Spring 容器管理着容器中 Bean 之间的依赖关系,Spring 使用依赖注入的方式来管理 Bean 之间的依赖关系。使用 IoC 实现对象之间的解耦和。

四、第一个 Spring 程序 1. 使用Spring框架创建自定义类型对象

1.设置本机仓库

2.创建 Maven 项目

3.引入 Maven 依赖 pom.xml

添加 Spring 依赖


    org.springframework
    spring-context
    5.3.14


4.定义接口及实现类

SomeService接口

public interface SomeService {
    void doSome();
}

SomeServiceImpl 为SomeService 接口实现类

public class SomeServiceImpl implements SomeService {
	public SomeServiceImpl() {
		super();
		System.out.println("SomeServiceImpl无参数构造方法");
	}
	@Override
	public void doSome() {
		System.out.println("====业务方法doSome()===");
	} 
}


5.创建 Spring 配置文件

在 src / main / resources / 目录现创建一个 xml 文件,文件名可以随意,但 Spring 建议的名称为applicationContext.xml。

步骤:

new --> XML Configuration File --> Spring Config

如果没有 Spring Config 这个选项,则是 pom.xml 中的 Spring 依赖没有配置好的缘故,要记住添加完依赖后要点击旁边的 reload 按钮


创建完后如图所示



       
       

spring 配置中需要加入约束文件才能正常使用,约束文件是 .xsd 扩展名

然后注册bean对象,即在上述代码内部添加


:用于定义一个实例对象。一个实例对应一个 bean 元素。所谓的Java Bean 在 Spring 中即为 Java 对象

id :该属性是 Bean 实例的唯一标识,程序通过 id 属性访问 Bean,Bean 与 Bean 间的依赖关系也是通过 id 属性关联的。

class :指定该 Bean 所属的类,注意这里只能是类,不能是接口。

6.定义测试类

创建测试类Test 在其中定义方法test01,并写入以下内容

 String resource = "applicationContext.xml";
 ApplicationContext ac = new ClassPathXmlApplicationContextO(resource);
 SomeService service = (SomeService) ac.getBean("someService");
 service.doSome();

完整测试类:

package com.fancy;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class test {
    @Test
    public void test01() {
        // 1. 指定 spring 配置文件的位置和名称
        String resource = "applicationContext.xml";
        // 2. 创建 spring 容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext(resource);
        // 3. 从 spring 容器中获取对象, 使用id
        SomeService service = (SomeService) ac.getBean("someService");
        // 4. 执行对象的业务方法
        service.doSome();
    }
}

2. 使用 Spring 框架创建非自定义类型对象

如果是使用 Spring 创建非自定义类型对象呢 ?

比如创建日期类对象

在 spring 配置文件 applicationContext.xml 文件中 加入 java.util.Date 定义 :


在测试类中:

调用 getBean(“myDate”); 获取日期类对象。

3. 容器接口与实现类

ApplicationContext 接口(容器)
ApplicationContext 用于加载 Spring 的配置文件,在程序中充当”容器”的角色。其实现
类有两个 :ClassPathXmlApplicationContext 与 FileSystemXmlApplicationContext。

    配置文件在类路径下:若 Spring 配置文件存放在项目的类路径下,则使用 ClassPathXmlApplicationContext 实现类进行加载。ApplicationContext 容器中对象的装配时机: ApplicationContext 容器,会在容器对象初始化时,将其中的所有对象一次性全部装配好。以后代码中若要使用到这些对象,只需从内存中直接获取即可。执行效率较高。但占用内存。使用 Spring 容器创建 Java 对象 :
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727279.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号