Spring框架之IOC(控制反转)-----(Inversion of Control)

2023-11-15

Spring框架之IOC(控制反转)—–(Inversion of Control)

  1. 什么是IOC?

    1. 用来完成—- 原来由程序员主动通过new来实例化对象的这个事情,转交给Spring来负责创建对象。
    2. 控制反转中—-控制是控制类的对象。反转是指将对象交给Spring类进行管理
  2. IOC作用

    解耦—-解耦是指:程序员不需要去管理对象,即不需要自己取创建对象了。

    1. 举例:比如mybatis中每次使用mapper时需要创建SqlSesssion对象。这个过程转交给Spring来完成,可以提高开发效率。
  3. 环境搭建:

    1. 首先需要四个核心包:core、bean、context、expression
    2. 另外需要一个commons-logging包
      这里写图片描述
    3. xml文件配置

      1. xml文件的配置使用的是schema约束。
      2. 这种约束方式相比dtd文件,是对标签进行约束更加灵活
      3. 标签的约束通过引入文件的不同会产生不同的限制效果,可扩展性强。
      4. 官方命名为applicationContext.xml 可以自己命名其他名字。
      5. 通过引入xsd文件(schema文件)来进行约束。每次引入一个xsd文件时就是引入了一个namespace(命名空间)
  4. 通过Spring来创建对象。

    1. 一般new对象的方式
      这里写图片描述

      //javabean
      public class People {
         private String name;
         private int age;
         ..get、set方法
      }
      //测试方法
      public static void main(String[] args) {
         //People peo = new People();
             ApplicationContext applicationContext = new  ClassPathXmlApplicationContext("applicationContext.xml");//加载配置文件,创建applicationContext的实现类
             People peo = applicationContext.getBean("peo", People.class);
             System.out.println(peo);
         }
    2. xml文件配置对象

    <bean id="peo" class="com.song.po.People"/>  <!-- 配置对象的id和全类名  通过id获取对象 --!>
    1. 默认情况下,创建对象使用的是对象的无参构造。对象创建是在加载配置文件时创建的。
    //javabean的无参构造
    public People() {
           System.out.println("走无参构造");
    }
    //注释掉取下面取对象的代码
    public static void main(String[] args) {
           ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
    //        People peo = applicationContext.getBean("peo", People.class);
    //        System.out.println(peo);
       }
    //结果:走无参构造 说明在加载xml文件时就已经创建了bean对象,并放入了applicationContext容器中了
    
    // String[] beanName = applicationContext.getBeanDefinitionNames(); 该方法获取容器中所有加载对象的id名
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring框架之IOC(控制反转)-----(Inversion of Control) 的相关文章

随机推荐

  • 我与边缘计算 - [Jetson Xavier] - [浪潮边缘主机环境拓荒]

    目录 目的 过程 1 opencv 2 darknet 3 TensorRT 附录1 blas lapack cblas在Ubuntu上的安装 1 确保机器上安装了gfortran编译器 如果没有安装的话 可以使用 2 下载blas cbl
  • 日常小记,待转语雀

    java中的fast fail机制 r1 12king 博客园概念 fail fast 机制是java集合 Collection 中的一种错误机制 当多个线程对同一个集合的内容进行操作时 就可能会产生fail fast事件 分析 先看一个代
  • 如何在IDEA中创建一个项目

    首先双击IDEAjava运行环境 也就是双击程序啦 点击Create New Project 开始创建一个新的项目 然后点击下一步 next 然后作为小白 不需要勾选下面选项 接着下一步即可 多动动手啦 然后就是给项目名命 名命完以后直接F
  • C++ 多线程编程

    转自 C 标准线程库之共享资源 1 带普通互斥锁的多线程案例 include
  • 4.5创建型模式—————建造者模式(Bulider模式)

    在软件开发过程中有时需要创建一个复杂的对象 这个复杂对象通常由多个子部件按一定的步骤组合而成 例如 计算机是由 OPU 主板 内存 硬盘 显卡 机箱 显示器 键盘 鼠标等部件组装而成的 采购员不可能自己去组装计算机 而是将计算机的配置要求告
  • iOS快捷指令:执行Python脚本(利用iSH Shell)

    文章目录 前言 核心逻辑 配置iSH 安装Python 创建Python脚本 配置启动文件 测试效果 快捷指令 前言 iOS快捷指令所能做的操作极为有限 假如快捷指令能运行Python程序 那么可操作空间就瞬间变大了 iSH是一款免费的iO
  • 恶意代码分析——基础技术篇

    文章目录 恶意代码分析目的 恶意代码分析方法 恶意代码种类 恶意代码静态分析 环境 在线反病毒引擎 获取哈希值 certutil hanshfile path MD5 查找字符串hive string ida火绒剑 加壳 查壳 文件加壳 使
  • mac下使用brew下载软件卡住的处理办法

    方法1 control c 方法2 换成其他的镜像源 比较麻烦 以后再整理 先能用就行
  • [课程复习] 软件工程导论之经典题目回顾 (一)选择题、填空题1

    作者最近在复习考博 乘此机会分享一些计算机科学与技术 软件工程等相关专业课程考题 一方面分享给考研 考博 找工作的博友 另一方面也是自己今后完成这些课程的复习资料 同时也是在线笔记 基础知识 希望对您有所帮助 不喜勿喷 软件工程导论 张海藩
  • docker nexus3磁盘空间满,扩容后导致NullPointerException问题

    文章目录 Nexus修复文档 问题描述 修复过程 遇到的坑 Nexus修复文档 问题描述 公司内部一个私有jar无法上传至服务器 后进入nexus 查看日志 发现报disk异常 查看磁盘占用 只剩几百兆的磁盘在那边瑟瑟发抖了 后公司网管在双
  • vue3.2 对el-table 树型结构数据的处理(干货)

    vue3 2 对el table 树型结构数据的处理 干货 将偏平数据转为树状结构的数据 封装了两种方法 将一维数组处理成带children的el tree树状数据结构 第一种方法 使用递归的方式处理偏平化数据 Method 使用递归的方式
  • cad卸载_CAD卸载后为什么安装不了?解决方法原来是这样!

    看到有不少小伙伴说自己遇到这样的问题 想要尝试重新安装CAD软件 但是在安装过程中系统却提示CAD软件已安装 导致我们无法继续安装 怎么办 出现这种情况通常是因为软件没有正常卸载导致的 例如直接删除安装目录文件和快捷方式 这样做的结果是注册
  • idea中maven项目编译后中文乱码问题

    一 问题描述 idea中maven项目编译后 jar包里的中文乱码 如下图 二 问题发生原因 2 1 在idea控制台进行编译 使用 mvn clean package Dmaven test skip true 2 2 其实编译过程里已经
  • unsigned long long妙用

    洛谷 P2181 对角线 使用unsigned long long可以防止爆精度 以下是各精度的范围 include
  • 仙境传说RO:添加地图传送门教程

    仙境传说RO 添加地图传送门教程 大家好我是艾西 上一篇文章中我跟大家分享了仙境传说RO怎么添加NPC NPC可以加入自己想要售卖的装备物品等 那么对于玩家跑地图需要手动跑肯定是不方便的毕竟大家玩游戏就是为了娱乐以及放松 那么今天艾西教大家
  • ajax 返回值赋值给父页面,关于父窗口给页面中的iframe传递数据的问题

    framework2 0 要达到效果 当点击gridview中任一条记录的linkbutton 在RowDataBound时 捆有唯一标识该条记录的id 时 下面的iframe可以显示详细的编辑页面 并且显示该条记录的各个field值 要求
  • 图像算法之双线性差值算法(灰度图像)

    1 函数定义 双线性差值算法 struct stPGMImage BilinearInterpolation struct stPGMImage image double zoom factor x double zoom factor y
  • JMETER性能自动化测试-02性能指标

    什么是事务 1 可以是一个接口请求1次 jmeter中 默认1个接口完成1次请求 当做1个事务 2 也可以是多个接口请求 完成一个功能或者一个业务 事务控制器就可以把多个接口合并成1个接口 3 jmeter中的事务 可以是1个接口的1次请求
  • Android-组件化开发

    一 优点 1 基础功能复用 节省开发时间 在项目初期框架搭建的时候 基础功能可直接搬移复用 日积月累 每个人 公司应该都会有一套自己的Base 2 业务拆分 便于分工 实现解耦 单独的业务模块抽取成一个独立的Module 不同人员在各自的模
  • Spring框架之IOC(控制反转)-----(Inversion of Control)

    Spring框架之IOC 控制反转 Inversion of Control 什么是IOC 用来完成 原来由程序员主动通过new来实例化对象的这个事情 转交给Spring来负责创建对象 控制反转中 控制是控制类的对象 反转是指将对象交给Sp