Spring入门学习—Spring IOC

2023-11-13

一、什么是Spring?

Spring是一个轻量级的IOC/DI和AOP容器的开源框架

目标:使现有技术更加易用,推进编码最佳实践

内容:IOC容器、AOP实现、数据访问支持、简化JDBC/ORM框架、声明式事务、Web集成

设计理念:面向Bean的编程

 二、Spring 的优点

1、低入侵式设计

2、独立于各种应用服务器

3、依赖注入特性将组件关系透明化,降低耦合度

4、面向切面编程特性允许将通用任务进行集中式处理

5、可以与第三方框架良好整合

6、非常简单的且强大的声明式事务管理

7、提供与第三方Web框架无缝集成,且自己也提供了一套 SpringMVC 框架,来方便 Web 层搭建

三、Spring Ioc的原理和配置

1、IOC(Invision of control)控制反转:

是一种设计思想,就是原本在程序中需要手动创建对象的权利,交给spring框架管理

IOC的实现方式是工厂模式反射机制

我们要了解以下两点:

(1)是谁控制谁?    容器控制对象

(2)为什么是反转?  从主动获取依赖对象到被动接受依赖对象的反转

Ioc容器是实现Ioc的载体,Ioc容器实际上就是个Map(key,value),map中存放各种对象

Ioc容器就像一个工厂一样,当我们需要创建一个对象时,只需要配置好配置文件或贴注解即可,完全不用考虑对象时如何被创建出来的

将对象相互依赖的关系交给ioc容器管理,这样可以很大程度简化应用开发

使用Ioc的话,我们只需要配置好,在需要的地方引用就好,这大大的增加了项目的可维护性且降开发难度

2、DI(Dependency Injection)依赖注入:

DI其实就是IOC的另外一种说法

我们其实了解以下四点就容易理解:

(1)谁依赖谁?        应用程序依赖IOC容器

(2)为什么依赖?        应用程序需要IOC容器提供外部资源

(3)谁注入谁?        IOC向应用程序注入

(4)注入什么?        IOC向应用程序注入外部资源、数据等

Spring 创建对象的过程中,将对象依赖属性通过配置设值给该对象

就是给对象的属性设置属性值

 3、使用SpringIOC的步骤是什么?

  1. 添加Spring Jar包
  2. 创建Spring的配置文件
  3. 在配置文件中创建组件
  4. 增加组件依赖

4、如何使用Spring实现“控制反转”?

  • 编写HelloSpring类,输出“Hello, Spring!”
  • 字符串“Spring”通过Spring注入到HelloSpring类中

步骤:

(1)添加Jar包

  

(2)编写配置文件

<?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">
    <!--    以上是ioc的基础头部信息-->
    <!--创建组件-->
    <bean id="helloSpring" class="com.lss.ioc.HelloSpring">
        <property name="who" value="Spring"></property>
    </bean>
</beans>

(3)编写代码获取HelloSpring实例

package com.lss.ioc;

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

/**
 * Created by IntelliJ IDEA.
 *
 * @Author : 梁三岁
 * @name :HelloSpring的测试类
 * @create 2022/8/29 20:08
 */
public class HelloSpringTest {

    @Test
    public void hello(){
        //先要创建应用的上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //通过上下文对象,获得HelloSpring对象
        //通过容器获得对象,这个容器就是Spring
        HelloSpring helloSpring =(HelloSpring) context.getBean("helloSpring");
        //调用其对象的方法
        helloSpring.print();
    }
}
package com.lss.ioc;

/**
 * Created by IntelliJ IDEA.
 *
 * @Author : 梁三岁
 * @name :HelloSpring实体类
 * @create 2022/8/29 20:05
 */
public class HelloSpring {

    private String who;

    public void print(){
        System.out.println("Hello,"+this.getWho()+"!");
    }

    public String getWho() {
        return who;
    }

    public void setWho(String who) {
        this.who = who;
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring入门学习—Spring IOC 的相关文章

随机推荐

  • GPU服务器上的tensorrt环境搭建

    GPU服务器上的tensorrt环境搭建 文章目录 GPU服务器上的tensorrt环境搭建 1 拉取docker服务器上的支持cuda cudnn的镜像文件 2 设置环境变量并下载相关依赖 2 1安装cuda和cudnn 2 2 pyto
  • python中 什么是描述符?

    文章目录 什么是描述符 动态查找 管理属性 set name 魔术方法 描述符定义 数据验证模块 自定义验证 Goods类的验证 总结 参考文档 什么是描述符 什么是描述符 描述符 是python中一个高级的特性 简单来说 是用来控制 对象
  • 最大化印刷MES管理系统价值,提升印刷车间效率与质量

    印刷MES管理系统 既是对ERP计划及车间现场管理的实时反馈及响应 更是制造执行过程中人 机 料 法 环等资源相互作用 相互配置的最优方案监控 可以让企业获得更多 更有利 更实用的生产制造数据 在这个过程当中 提升效率和质量 降低风险就是印
  • 30天自制操作系统(第02天)–汇编语言学习和MakeFile入门

    第二天 我们将之前的程序进一步翻译成汇编语言 进一步了解启动程序到底做了些啥 还记得第一天中有一部分程序主体么 以及最开头的代码 我们把它们翻译成汇编看看 hello os TAB 4 ORG 0x7c00 指名程序的装载地址 以下一段是标
  • 关于使用快慢指针进行单向链表环存在性判定的若干问题的进一步思考

    文章目录 面试官问这个问题的目的是什么 快慢指针的工作原理 快慢指针究竟几步可以定位环 快指针的速度只能是双倍速么 其他判定单向链表环路的方法 小结 费曼算法 1 写下这个问题 2 真正地努力思考 3 写下解决办法 物理学家Murray G
  • 苹果手机怎样批量删除照片

    https jingyan baidu com article 851fbc37953b183e1f15ab02 html 喜欢使用苹果手机拍照的朋友 会经常删照片 那怎样操作更快呢 今天就为大家分享苹果手机怎样批量删除照片 工具 原料 苹
  • git命令详解

    一 简介 git作为应用广泛的一种分布式版本控制系统 其与svn比较最大的差别就是一个是分布式 一个是集中式 git在每个开发者的本地有一个完整的版本库 当在本地处理工作时 无需联网便可修改提交 当需要与其它开发者交互时 只需要提交自己的修
  • 陀螺研究院×BSN丨解析区块链视角下的消费者权益保护访谈全文发布

    3月是我国消费者权益保护月 在近日播出的3 15晚会中 央视曝光了科勒卫浴 宝马 Max Mara多家知名商店安装人脸识别摄像头 手机清理软件泄露老人隐私 瘦肉精羊等多个极其恶劣的消费者权益侵害行为 可以看出 随着数据时代的渐行渐近 消费者
  • switch怎么切换服务器账号,任天堂eshop如何换区 switch账号如何切换其他服地区

    任天堂eshop里面的游戏因为注册地区不同 游戏的售价也相应不同 因为汇率的影响 游戏的售价产生了高低差价 这种差价可以让玩家买到较低价的游戏 操作起来方法就是在switch里进行账号切换 怎样切换任天堂账号地区呢 一起来看下吧 1 首先需
  • /usr/lib64/sa/sa1脚本解释

    usr lib64 sa sa1脚本解释 前言 脚本原文 脚本解释 附 前言 这个脚本是 Linux 系统上的 sysstat 工具的一部分 在 etc cron d sysstat这个定时任务下执行 用来收集系统性能数据 需要配合 etc
  • 休眠后网络无法自动连接——网卡属性没有电源管理选项

    问题描述 1 每次休眠过后网卡都是无法连接网络的状态 需要手动禁用 gt 开启网卡后才会恢复正常 2 同时网卡属性里没有电源管理选项 环境 Win10 网卡设备 realtek pcie gbe family controller 解决办法
  • 遗传算法超详细图解

    遗传算法 Genetic Algorithm 顾名思义 是一种基于自然选择原理和自然遗传机制的启发式搜索算法 该算法通过模拟自然界中生物遗传进化的自然机制 选择 交叉和变异操作 将好的遗传基因 最优目标 不断遗传给子代 使得后代产生最优解的
  • webpack对js文件和eslint做缓存处理

    一 什么是webpack的cache Webpack的缓存通常是指模块缓存和构建缓存 1 模块缓存 通过缓存模块的内容 可以避免重复读取和解析同一个模块的开销 Webpack默认是开启模块缓存的 即第一次编译时会将已经加载的模块信息缓存到内
  • MAX30102血氧模块检测心率和血氧

    1 完成 CubeMX初始化配置 1 1 利用CubeMX完成HAL库工程模板和初始化 通过选择芯片型号创建CubeMX工程 在弹出的对话框中输入开发板上的芯片型号 STM32F103RB 在右侧筛选栏中选择Tx型 即开发板上芯片所用的LQ
  • 7个高清图片素材网,免费/可商用

    1 菜鸟图库 https www sucai999 com pic html v NTYwNDUx 菜鸟图库是一个综合性素材网站 这里面有很多设计 图片 视频 音频等素材 图片素材全部都是高清无水印 基本都能免费下载 还有部分素材是可以商用
  • c#输出当前日期和当前时间_如何在C#中的当前日期时间添加小时数?

    我们在C 中使用DateTime类的AddHours 方法 Syntax 句法 DateTime DateTime AddHours double 以下C 代码在当前日期时间添加小时数 using System namespace Cons
  • 父类和子类

    尽管很多知名译本都把C 面向对象里有继承关系的类称作基类和派生类 但人们很多口语化的表达里还是叫他们父类和子类 毕竟 你继承了我嘛 非亲非故的 谁让你继承 恰逢今天父亲节 我们就来聊聊C 里对父亲和儿子这一关系的设计 读程序 品人生 什么东
  • 优雅/粗暴地关闭TCP连接--close-shutdown的选择

    一个 TCP 连接需要经过三次握手进入数据传输阶段 最后来到连接关闭阶段 在最后的连接关闭阶段 我们需要重点关注的是 半连接 状态 因为 TCP 是双向的 这里说的方向 指的是数据流的写入 读出的方向 比如客户端到服务器端的方向 指的是客户
  • Lua封装延时执行函数

    延时执行函数 function delayTimeGuideEvent target func times 延迟时间执行函数 local delaytime 1 if times then delaytime times end getRo
  • Spring入门学习—Spring IOC

    一 什么是Spring Spring是一个轻量级的IOC DI和AOP容器的开源框架 目标 使现有技术更加易用 推进编码最佳实践 内容 IOC容器 AOP实现 数据访问支持 简化JDBC ORM框架 声明式事务 Web集成 设计理念 面向B