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

Spring IOC 控制反转

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

Spring IOC 控制反转

文章目录
  • Spring IOC 控制反转
    • 一、概述
      • 1、简介
      • 2、IOC在Spring中如何实现
      • 3、ApplicationContext中的实现类
    • 二、IOC的XML实现方式
      • 1、代码案例
        • 1.1、创建Maven项目
        • 1.2、创建Maven的Module
        • 1.3、导入jar包,配置pom.xml,并下载
        • 1.4、创建 com.sgz.ioc 包
        • 1.5、创建DemoIOC类
        • 1.6、创建applicationContext.xml配置文件
        • 1.7、创建 com.sgz.test 测试类包
        • 1.8、创建TestIOC测试类
      • 2、获取bean的三种方式
        • 2.1、通过bean的id获取
        • 2.2、通过bean的类型获取(接口类也可以,父类也可以)
        • 2.3、通过bean的id和类型获取
        • 2.4、总结
    • 三、IOC的注解实现方式
      • 1、代码案例
        • 1.1、创建Maven项目
        • 1.2、创建Maven的Module
        • 1.3、导入jar包,配置pom.xml,并下载
        • 1.4、创建 com.sgz.ioc 包
        • 1.5、创建DemoIOC类
        • 1.6、创建applicationContext.xml配置文件
        • 1.7、创建 com.sgz.test 测试类包
        • 1.8、创建TestIOC测试类
      • 2、IOC的四种注解
        • 2.1、四个注解
        • 2.2、注意
      • 3、IOC的扫描
        • 3.1、扫描组件
        • 3.2、排除扫描
        • 3.3、包含扫描


Spring IOC 控制反转 一、概述 1、简介
  • IOC(Inversion of Control),反转控制
  • IOC是个容器
  • 把创建对象管理对象的过程交给了Spring框架
2、IOC在Spring中如何实现
  • IOC容器中管理的组件叫做bean
  • 创建bean之前,首先要创建IOC容器
  • ApplicationContext是BeanFactory的子接口,BeanFactory这是IOC容器的基本实现且是Spring内部使用的接口
3、ApplicationContext中的实现类
  • ClassPathXmlApplicationContext:通过读取类路径下的XML格式的配置文件创建IOC容器对象 (常用)
  • FileFystemXmlApplicationContext:通过文件系统路径读取XML格式的配置文件创建IOC容器对象
  • ConfigurableApplicationContext:ApplicationContext的子接口,包含一些扩展方法 refresh() 和 close(),让ApplicationContext 具体启动、关闭和刷新上下文的能力
  • WebApplicationContext:专门为Web应用准备,基于Web环境的IOC容器对象,并将对象引入存入ServletContext域中
二、IOC的XML实现方式 1、代码案例 1.1、创建Maven项目


1.2、创建Maven的Module



1.3、导入jar包,配置pom.xml,并下载
    
    
        
        
            org.springframework
            spring-context
            5.3.21
        
        
        
            junit
            junit
            4.13.2
        
    
1.4、创建 com.sgz.ioc 包

1.5、创建DemoIOC类
package com.sgz.ioc;


public class DemoIOC {
    public void FirstIOC(){
        System.out.println("我是Spring IOC的XML实现方式");
    }
}

1.6、创建applicationContext.xml配置文件



    
    
    


1.7、创建 com.sgz.test 测试类包

1.8、创建TestIOC测试类
package com.sgz.test;

import com.sgz.ioc.DemoIOC;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class TestIOC {

    @Test
    public void testIOC() {
        // 1、获取IOC容器,读取配置文件
        ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 2、获取IOC容器中的bean,会得到new对象的地址值
        DemoIOC iocOne = (DemoIOC) ioc.getBean("iocOne"); // 通过bean的id获取,这里的 iocOne 是 applicationContext.xml 配置文件中的 id
        // 3、调用类中的方法
        iocOne.FirstIOC();
    }

}

2、获取bean的三种方式 2.1、通过bean的id获取
DemoIOC iocOne = (DemoIOC) ioc.getBean("iocOne");    // 通过bean的id获取
2.2、通过bean的类型获取(接口类也可以,父类也可以)
DemoIOC iocOne = ioc.getBean(DemoIOC.class);  // 通过bean的类型获取
2.3、通过bean的id和类型获取
 DemoIOC iocOne = ioc.getBean("iocOne", DemoIOC.class); // 通过bean的id和类型获取
2.4、总结

在满足bean的id 唯一性 的前提下,即通过bean的 类型,bean所 继承的类的类型 ,bean所 实现的接口 的类型都可以获取bean

三、IOC的注解实现方式 1、代码案例 1.1、创建Maven项目


1.2、创建Maven的Module



1.3、导入jar包,配置pom.xml,并下载
    
    
        
        
            org.springframework
            spring-context
            5.3.21
        
        
        
            junit
            junit
            4.13.2
        
    
1.4、创建 com.sgz.ioc 包

1.5、创建DemoIOC类
package com.sgz.ioc;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;



//@Component("my")   // 自定义bean的名字(对象名),我们就使用这名字就行了,不需要再使用默认的名字
@Component
//@Controller("my")
//@Controller
//@Service("my")
//@Repository("my")
//@Repository
public class DemoIOC {
    public void ioc() {
        System.out.println("我是 Spring IOC的注解实现方式");
    }
}

1.6、创建applicationContext.xml配置文件



    
    
    


1.7、创建 com.sgz.test 测试类包

1.8、创建TestIOC测试类
package com.sgz.test;

import com.sgz.ioc.DemoIOC;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class TestIOC {

    @Test
    public void testIOC() {
        // 1、读取配置文件
        ClassPathXmlApplicationContext spring = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 2、直接getBean
        DemoIOC demoIOC = (DemoIOC) spring.getBean("demoIOC"); // 使用默认名,默认值为类的驼峰,即类名的首字母为小写
       // DemoIOC demoIOC = (DemoIOC) spring.getBean("my"); // 使用自定义
        // 3、调用该类的方法
        demoIOC.ioc();
    }
}

2、IOC的四种注解 2.1、四个注解
  • @Component:将类标识为普通组件
  • @Controller:将类标识为控制层组件
  • @Service:将类标识为业务层组件
  • @Repository:将类标识为持久层组件
2.2、注意
  • 它们本质上一样,但是为了代码的可读性,不能随便标记
  • 默认值为类的驼峰,即类名的首字母为小写
  • 可以通过标识组件的注解的value属性值设置bean的自定义的id
    • 例:@Component(“my”)
3、IOC的扫描 3.1、扫描组件
  • context:component-scan:扫描组件
  • base-package:需要扫描组件的包,会扫描该包下的所有内容
  • 生成bean的id,为类名首字母为小写

3.2、排除扫描
    
               
             
             

    

3.3、包含扫描
    
        
             
             
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1036295.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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