SpringFramework核心技术一(IOC容器:IOC容器和Bean介绍)

2023-11-02

题记:

  • 做技术还是得一步步慢慢来,先搞懂核心原理,一味的只会用,是没有未来的啊。在现在的区块链公司当带着大家做项目的时候,我就经常说作为一名工程师,一定不能浮于表面,如果想在技术这条路上走下去,懂原理才是根本。
    现在框架太多,但是Spring依然是主流,很多工程师都说自己熟悉精通Spring、看过Spring源码,暂且不说有多少收获,咱还是从官方文档一步步慢慢来吧。

  • 一、Spring的核心技术

    • 首先看一下Spring官方的介绍:
      Foremost amongst these is the Spring Framework’s Inversion of Control (IoC) container. A thorough treatment of the Spring Framework’s IoC container is closely followed by comprehensive coverage of Spring’s Aspect-Oriented Programming (AOP) technologies. The Spring Framework has its own AOP framework, which is conceptually easy to understand, and which successfully addresses the 80% sweet spot of AOP requirements in Java enterprise programming.
      译:Spring框架中最重要的部分就是控制反转(ICO)容器。面向切面编程的(AOP)技术紧随其后。
      Spring框架拥有自己的AOP框架,这个框架在概念上是很容易理解的,并且成功解决了Java企业级编程中80%对AOP的需要。
  • 二、IOC容器

    • 2.1 SpringIOC容器和Bean的介绍
      IoC也被称为依赖注入(DI)。它是一个过程,对象通过构造函数参数,工厂方法的参数或在工厂方法构造或返回后在对象实例上设置的属性来定义它们的依赖关系,即它们使用的其他对象。容器 在创建bean时会注入这些依赖关系。这个过程基本上是相反的,因此名为Inversion of Control(IoC),通过使用类的直接构造或诸如Service Locator模式之类的机制来控制其依赖关系的实例化或位置的bean本身。
    • 2.2
      在org.springframework.beans和org.springframework.context包是Spring框架的IoC容器的基础。
      这里写图片描述
    • 2.3
      在org.springframework.beans中,有一个beans.factory的包
      这里写图片描述
      该 BeanFactory 接口提供了一种能够管理任何类型对象的高级配置机制。
    • 2.4
      ApplicationContext 是一个子接口BeanFactory。它增加了与Spring的AOP功能更容易的集成; 消息资源处理(用于国际化),事件发布; 和特定于应用层的上下文(例如,WebApplicationContext 用于Web应用程序中)。
      ApplicationContext位于spring-context包中,是一个接口。
      这里写图片描述
      WebApplicationContext也是一个接口,位于spring-web包中,继承了ApplicationContext
      这里写图片描述
  • 三、那么BeanFactory和ApplicationContext有什么联系呢?

    • 简而言之,它BeanFactory提供了配置框架和基本功能,并ApplicationContext增加了更多的企业特定功能。
    • 在Spring中,构成应用程序主干和由Spring IoC 容器管理的对象称为bean。bean是一个实例化,组装并由Spring IoC容器管理的对象。否则,bean只是应用程序中众多对象中的一个。Bean和 它们之间的依赖关系反映在容器使用的配置元数据中。
  • 四、容器的概览

    • 4.1
      该接口org.springframework.context.ApplicationContext表示Spring IoC容器,并负责实例化,配置和组装上述bean。容器通过读取配置元数据获取有关要实例化,配置和组装的对象的指示信息。配置元数据用XML,Java注释或Java代码表示。它允许您表示组成应用程序的对象以及这些对象之间丰富的相互依赖关系。
      这里写图片描述
    • 4.2
      ApplicationContextSpring提供了几个接口的实现。在独立应用程序中,通常会创建一个ClassPathXmlApplicationContext or 的实例 FileSystemXmlApplicationContext。虽然XML是用于定义配置元数据的传统格式,但您可以通过提供少量的XML配置来指示容器使用Java注释或代码作为元数据格式,以声明方式支持这些其他元数据格式。
      这里写图片描述
      这里写图片描述
    • 4.3
      下图是Spring如何工作的高级视图。您的应用程序类与配置元数据相结合,以便在ApplicationContext创建并初始化之后,您拥有完全配置且可执行的系统或应用程序。
      这里写图片描述

    • 4.4
      如上图所示,Spring IoC容器使用一种形式的 配置元数据 ; 此配置元数据表示作为应用程序开发人员如何告诉Spring容器在您的应用程序中实例化,配置和组装对象。
      传统上,配置元数据是以简单直观的XML格式提供的,这是本章的大部分内容用来传达Spring IoC容器的关键概念和功能。
      注意:基于XML的元数据不是唯一允许的配置元数据形式。Spring IoC容器本身与配置元数据实际写入的格式完全分离。现在很多开发人员为他们的Spring应用程序选择 基于Java的配置。

    • 4.5:配置元数据
      Spring容器中使用其他形式的元数据的信息:
      基于注释的配置:Spring 2.5引入了对基于注释的配置元数据的支持。
      基于Java的配置:从Spring 3.0开始,Spring JavaConfig项目提供的许多功能成为核心Spring框架的一部分。因此,您可以使用Java而不是XML文件来定义应用程序类外部的Bean。要使用这些新功能,请参阅@Configuration,@Bean,@Import 和@DependsOn注释。
      Spring配置由容器必须管理的至少一个,通常是多个bean定义组成。基于XML的配置元数据将这些bean配置为顶层元素内的元素。Java配置通常@Bean在@Configuration类中使用注释方法。
    • 4.6
      这些bean定义对应于组成应用程序的实际对象。通常,您可以定义服务层对象,数据访问对象(DAO),Struts Action实例等表示对象,Hibernate SessionFactories,JMS 等基础结构对象 Queues。通常,不会在容器中配置细粒度的域对象,因为创建和加载域对象通常是DAO和业务逻辑的责任。但是,您可以使用Spring与AspectJ的集成来配置在IoC容器控制之外创建的对象。
    • 4.7
      以下示例显示了基于XML的配置元数据的基本结构:
<?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="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions go here -->

</beans>

未完待续~~~~

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

SpringFramework核心技术一(IOC容器:IOC容器和Bean介绍) 的相关文章

随机推荐

  • PHP中小型民宿酒店管理系统源码

    PHP中小型民宿酒店管理系统源码 近年来 民宿酒店行业以其独特的住宿体验和个性化服务受到越来越多旅行者的青睐 为了提高运营效率 改善客户体验 许多中小型民宿酒店开始引入管理系统 本文将介绍一款基于PHP开发的中小型民宿酒店管理系统源码 帮助
  • Axure动态布局,中部加入滚动条

    1 将部件设置为动态面板 然后再部件属性和样式中使用按需显示纵向滚动条 2 可以很好的处理因为内部页面过大挤占低端内容的问题
  • 解决Excel打开CSV文件中文乱码问题

    CSV打开乱码的处理方法 方法一 Excel的数据导入功能 方法二 CSV打开乱码的处理方法 CSV是用UTF 8编码的 而EXCEL是ANSI编码 由于编码方式不一致导致出现乱码 明白了原因之后 我们只需要把CSV文件的编码方式修改成与E
  • 第5章 数组 第3题

    题目 编写一个程序 输入一个字符串 输出其中每个字符在字母表中的序号 对于不是英文字母的字符 输出0 例如 输入为 acbf8g 输出为1 3 2 6 0 7 代码 include
  • 基础练习—矩阵乘法

    题目描述 给定一个N阶矩阵A 输出A的M次幂 M是非负整数 例如 A 1 2 3 4 A的2次幂 7 10 15 22 输入 第一行是一个正整数N M 1 lt N lt 30 0 lt M lt 5 表示矩阵A的阶数和要求的幂数 接下来N
  • excel或txt格式坐标到面图层(python)

    背景 现有如下图所示的多个界址点坐标 excel格式或txt格式 需求 根据大量界址点坐标转换为界址点坐标对应的面shp图层 解决思路 一 为方便处理首先将txt文件或excel文件转换为csv文件 逗号分割符 二 为方便理解和使用 我们将
  • python numpy的学习

    0 引入numpy import numpy as np 1 将list变成np a 1 2 3 4 5 6 b np array a 将list变成array a shape 2 3 2行3列 a shape 0 2 获取行数 a sha
  • 攻防世界之WEB新手练习区(更新至11)

    攻防世界之WEB新手练习区 目录 001 view source 002 get post 003robots 004backup 005cookie 006disable button 007simple js 008xff refere
  • FTDI FT2232H在嵌入式教学中的应用

    FT2232H是FTDI chip在2012年发布的一款高速USB转串行通信的协议转换芯片 作为第五代USB协议转串行总线通信协议的芯片 完全符合USB2 0规范 480Mb s 并且可以依靠编程的方式配置成为串行或者并行的其他总线接口规范
  • Pycharm无法正常安装第三方库的时候,有以下几条应对方法

    1 首先检查自己的环境变量是否配置正确 点击setting 点击 Python Interpreter 点击Add Interpreter 配置完毕之后再试一次从这里下载 如果还不行的话可以换其他方法 2 从cmd或Pycharm Term
  • 什么是EL表达式

    EL表达式 expression language 即表达语言 它是为了便于存取数据而定义的一种语言 JSP2 0之后才成为一种标准 形式 以 开头 以 结尾 通过PAGE指令来说明是否支持EL表达式 具体举例 声明可以使用EL表达式 如果
  • 【腾讯云 TDSQL-C Serverless 产品测评】全面测评TDSQL-C Mysql Serverless

    全面测评TDSQL C Mysql Serverless 文章目录 全面测评TDSQL C Mysql Serverless 前言 什么是TDSQL C Mysql Serverless 初始化 TDSQL C Mysql Serverle
  • 前车之覆,后车之鉴——开源项目经验谈

    前车之覆 后车之鉴 开源项目经验谈 本文发表于 程序员 2005年第2期 随着开源文化的日益普及 参与开源 似乎也变成了一种时尚 一时间 似乎大家都乐于把自己的代码拿出来分享了 就在新年前夕 我的一位老朋友 一位向来对开源嗤之以鼻的J2EE
  • 毕设 ssd tf_gpu2 predict.py 备份代码

    如图 代码所属 https github com bubbliiiing ssd tf2 怕到时候改坏了 unbelievable 不是 import time import cv2 import numpy as np import te
  • 数据结构顺序表和链表(超详细)

    线性表 线性表 linear list 是 n 个具有相同特性的数据元素的有限序列 线性表是一种在实际中广泛使 用的数据结构 常见的线性表 顺序表 链表 栈 队列 字符串 线性表在逻辑上是线性结构 也就说是连续的一条直线 但是在物理结构上并
  • Java中如何编解码

    继续学习Java Web的编解码章节 记录Java中如何把ISO 8859 GB 2312 GBK UTF 16 UTF 8编码进行编码 额 System out printf x int b i 这句代码没有懂 希望大家评论帮忙解决 pu
  • html嵌入地图

    一 打开 百度地图生成器 的网址 http api map baidu com lbsapi creatmap index html 复制代码 保存html 二 在需要地图的位置 插入这行代码 长宽大小可以自定义 三 效果
  • javaweb应用的MVC分层,开发太方便了!!!

    javaweb应用的MVC分层 让我们先来了解一下 MVC开发模式的组成吧 看完这张图 你有什么看法 知道了这样的开发模式后 动手创建一个工程吧 如图是根据上图创建的一个实例 当然有很多的优点 相对于javaweb的初级开发 优点 耦合性低
  • C++简介

    C 是一种计算机高级程序设计语言 由C语言扩展升级而产生 最早于1979年由本贾尼 斯特劳斯特卢普在AT T贝尔工作室研发 C 既可以进行C语言的过程化程序设计 又可以进行以抽象数据类型为特点的基于对象的程序设计 还可以进行以继承和多态为特
  • SpringFramework核心技术一(IOC容器:IOC容器和Bean介绍)

    题记 做技术还是得一步步慢慢来 先搞懂核心原理 一味的只会用 是没有未来的啊 在现在的区块链公司当带着大家做项目的时候 我就经常说作为一名工程师 一定不能浮于表面 如果想在技术这条路上走下去 懂原理才是根本 现在框架太多 但是Spring依