spring概念 及 SpringIoc 、DI

Spring框架,即:SpringFramework,主要优势

  • 1、丰富的生态系统:Sping支持许多模块和库,如:SpringBoot、SpringSecurity、SpringCloud等,

  • 2、模块化设计:框架组件之间的松散耦合和模块化设计使得SpringFramework具有良好的可重用性、可扩展性、可维护性。

  • 3、简化java开发,SpringFramework简化了java开发,提供了各种工具和API,降低开发成本,
    同时,SpringFramework支持各种应用场景,包括Web应用程序、RESTful API、消息传递、批处理等

Spring使创建Java企业应用程序变得容易,它提供了在企业环境中采用 Java 语言所需的一切,
支持Groovy和Kotin作为JVM上的替代语言,并且可以根据应用程序的需求灵活地创建多种架构,
SpringFramework从6.06开始,Spring需要java17+


SpringFramework主要功能模块

a. Core Container:核心容器,在Spring环境下使用任何功能都必须基于IOC容器b. AOP&Aspects:面向切面编程c. TX:声明式事务管理d. Spring MVC:提供了面向Web应用程序的集成功能

SpringIoc容器介绍:

SpringIoc容器,负责实例化、配置和组装Bean(组件),容器通过读取配置文件,来获取有关要实例化、配置和组装组件的指令,配置文件以XML、Java注解或java代码形式表现,它允许表达组成应用程序的组件以及这些组件之间丰富的相互依赖关系。

SpringIoc容器接口:

BeanFactory接口提供了一种高级配置机制,能够管理任何类型的对象,它是SpringIoc容器标准化超接口。

ApplicationContext 是 BeanFactory的子接口,它扩展了以下功能

a. 更容易与Spring的AOP功能集成b. 消息资源处理(用于国际化)c. 特定于应用程序给与此接口实现,例如Web应用程序的WebApplicationContext

简而言之,BeanFactory提供了配置框架和基本功能,而,ApplicationContext添加了更多特定于企业的功能,
ApplicationContext 是 BeanFactory 的完整超集。

ApplicationContext容器的实现类:

类名									简介
a. ClassPathXmlApplicationContext:通过读取类路径下的XML格式的配置文件,创建IOC容器对象b. FileSystemXmlApplicationContext:通过文件系统路径,读取XML格式的配置文件,创建IOC容器对象c. AnnotationConfigApplicationContext:通过读取Java配置类,创建IOC容器对象d. WebApplicationContext:专门为Web应用准备,基于Web环境创建IOC容器对象,并将对象引入存入ServletContext域中

Spring框架的配置方式:XML配置方式,注解方式,java配置类方式

  • 1、XML配置方式:
    是Spring框架最早的配置方式之一,通过在XML文件中定义Bean及其依赖关系、Bean的作用域等信息,
    让SpringIoC容器来管理Bean之间的依赖关系,该方式从Spring框架的第一版开始提供支持

  • 2、注解方式:
    从Spring2.5版本开始提供支持,可以通过在Bean类上使用注解来替代XML配置文件中的配置信息,
    通过在Bean类上加上相应的注解(如:@Component、@Service、@Autowired等),
    将Bean注册到SpringIoC容器中,这样

  • 3、java配置类方式:
    从Spring3.0版本开始提供支持,通过java类来定义Bean、Bean之间的依赖关系和配置信息,
    从而代替XML配置文件的方式,java配置类是一种使用java编写配置信息的方式,
    通过@Configuration、@Bean等注解来实现Bean和依赖关系的配置

  • 现在主流的开发环境:配置类 + 注解


Spring Ioc / DI:

  • 1、IoC容器:
    SpringIoC容器,负责实例化,配置和组装Bean(组件)核心容器,
    容器通过读取配置文件来获取有关要实例化、配置和组装组件的指令

  • 2、IoC(Inversion of Control)控制反转
    IoC主要针对,对象的创建和调用控制而言的,
    也就是说,
    当应用程序需要使用一个对象时,不再是应用程序直接创建该对象,而是由IoC容器来创建和管理,
    即:控制权由应用程序,转移到IoC容器中,也就是“反转”了控制权。

    这种方式基本上是通过依赖查找的方式实现的,即:IoC容器维护着构成应用程序的对象,并负责创建这些对象

  • 3、DI(Dependency Injection)依赖注入
    DI是指,在组件之间传递依赖关系的过程中,将依赖关系在容器内部进行处理,
    这样就不必在应用程序中硬编码对象之间的依赖关系,实现了对象之间的解耦合。

      在Spring中,DI是通过XML配置文件或注解的方式实现的,它提供了三种形式的依赖注入:3.1、构造函数注入3.2、Setter方法注入3.3、接口注入
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

千川素材投放效果追踪与精准识别

一、投放效果深度追踪:从数据表面到策略内核在数字广告时代,单纯的曝光量已不再是评估广告效果的唯一标准。投放效果的深度追踪要求我们深入挖掘每一个数据背后的意义,洞察广告策略的实际效果。这不仅涉及到广告的点击率、转化率等显性指标&a…

Java毕业设计 基于SSM新闻管理系统

Java毕业设计 基于SSM新闻管理系统 SSM jsp 新闻管理系统 功能介绍 用户:首页 图片轮播 查询 登录 注册 新闻正文 评论 广告 社会新闻 天下新闻 娱乐新闻 个人中心 个人收藏 管理员:登录 用户管理 新闻管理 新闻类型管理 角色:用户 管理员…

FMEA与智能机器人:提升机器人可靠性与安全性的关键

随着科技的飞速发展,智能机器人已经深入到我们生活的方方面面,从工业生产到家庭服务,从深海探险到太空探索,处处都有它们的身影。然而,随着应用的日益广泛,机器人系统的复杂性和不确定性也在增加&#xff0…

Paper Digest|基于在线聚类的自监督自蒸馏序列推荐模型

论文标题: Leave No One Behind: Online Self-Supervised Self-Distillation for Sequential Recommendation 作者姓名: 韦绍玮、吴郑伟、李欣、吴沁桐、张志强、周俊、顾立宏、顾进杰 组织单位: 蚂蚁集团 录用会议: WWW 2024 …

书生浦语训练营2期-第一节课笔记

笔记总结: 了解大模型的发展方向、本质、以及新一代数据清洗过滤技术、从模型到应用的典型流程、获取数据集的网站、不同微调方式的使用场景和训练数据是什么,以及预训练和微调在训练优势、通信/计算调度、显存管理上的区别。 收获: 理清了预训练和微调…

深入理解Yarn:安装、配置与最佳实践

深入理解Yarn:安装、配置与最佳实践 目录 深入理解Yarn:安装、配置与最佳实践 一、引言 二、Yarn简介 三、安装Yarn 四、 基本使用 五、高级特性 六、 案例研究:迁移现有项目到Yarn 七、代码示例:Yarn脚本和工作流 八、…

第十三届蓝桥杯省赛真题 Java 研究生 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 排列字母试题 B: 灭鼠先锋试题 C: 质因数个数试题 D: 数位排序试题 E: 蜂巢试题 F : \mathrm{F}: F: 爬树的甲壳虫试题 G: 重新排序试题 H \mathrm{H} H : 技能升级试题 I: 最优清零方案试题 J : \mathrm{J}: J: 推导部分和 发现宝藏 …

【代码随想录算法训练营第三十八天 | LeetCode509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯】

代码随想录算法训练营第三十八天 | LeetCode509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯 一、509. 斐波那契数 解题代码C&#xff1a; class Solution { public:int fib(int N) {if (N < 1) return N;int dp[2];dp[0] 0;dp[1] 1;for (int i 2; i < N; i)…

Java基础之算数运算符的初级用法

运算符 运算符: 对字面量或者变量进行操作的符号 表达式: 用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式 不同运算符连接的表达式体现的是不同类型的表达式 一 .算数运算符 实践一下 加 减 乘 运行结果: 除 取模 运行结果 练习: 数值拆分 需求…

Nginx_简介 + Linux系统下详细安装教程指路

安装教程指路 可参看该视频【尚硅谷Nginx教程&#xff08;亿级流量nginx架构设计&#xff09;】 https://www.bilibili.com/video/BV1yS4y1N76R/?p2&share_sourcecopy_web&vd_source4c2f33f3ba1a0dd45bfdf574befd0069 的p2-p7。从安装centos虚拟机到在虚拟机上安装ng…

Golang-Gorm-快速上手

Gorm文档 GORM文档地址 安装依赖 go get -u "gorm.io/driver/mysql"go get -u "gorm.io/gorm"连接数据库 默认连接方式 func main() {// 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情dsn : "user:passtcp(127.0.0…

Multisim14.0破解安装教程

Multisim14.0中文破解版是一款相当优秀的专业化SPICE仿真标准环境&#xff0c;Multisim14.0中文版功能强悍&#xff0c;为用户提供了所见即所得的设计环境、互动式的仿真界面、动态显示元件、具有3D效果的仿真电路、虚拟仪表、分析功能与图形显示窗口等等。Multisim破解版操作简…

Docker命令及部署Java项目

文章目录 简介Docker镜像镜像列表查找镜像拉取镜像删除镜像镜像标签 Docker容器容器启动容器查看容器停止和重启后台模式和进入强制停止容器清理停止的容器容器错误日志容器别名及操作 Docker部署Java项目 简介 Docker是一种容器化技术&#xff0c;可以帮助开发者轻松打包应用…

应用Druid解析SQL获取查询表字段、参数信息

业务需求&#xff1a;输入一条SQL&#xff0c;解析出对应的结果表字段列表与参数列表。 select t.id,t.name,date_format(update_time,%Y-%m) as update_month from t_user t where t.account#{account:varchar};解析后需获得&#xff1a; 结果字段信息&#xff1a;id&#x…

jetson-Ubuntu-指令

!!!!!!!!!!!!!!!!!!!设置运行程序权限!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1、设置软件启动依赖环境库: 启动脚本设置:run_start.sh #!/bin/bash cd /home/****/***/ sudo export LD_LIBRARY_PA…

Android 对内置应用默认授予所有权限,避免所有权限弹窗

需求: 进入桌面不弹出预制应用的所有权限弹窗,默认一次性授予,不在弹出,且重启不会复现。 查看应用信息可看到所有权限已经授予。防止出现安卓机器弹出界面大小无法点击现象 路径一: /vendor/mediatek/proprietary/packages/modules/Permission/PermissionController/…

【数据分析案列】--- 北京某平台二手房可视化数据分析

一、引言 本案列基于北京某平台的二手房数据&#xff0c;通过数据可视化的方式对二手房市场进行分析。通过对获取的数据进行清冼&#xff08;至关重要&#xff09;&#xff0c;对房屋价格、面积、有无电梯等因素的可视化展示&#xff0c;我们可以深入了解北京二手房市场的特点…

vue3+threejs新手从零开发卡牌游戏(十四):调整卡组位置,添加玩家生命值HP和法力值Mana信息

由于之前的卡组位置占了玩家信息的位置&#xff0c;所以这里将它调整到site区域&#xff1a; 修改game/site/p1.vue&#xff0c;在site右下角添加一个卡组区域&#xff1a; // 初始化己方战域 const init () > {let sitePlane scene.getObjectByName("己方战域Plan…

CCSDS CONVOLUTIONAL CODING 卷积码 规范

文章目录 3 CONVOLUTIONAL CODING3.1 overview3.2 general3.2.1 ATTACHED SYNC MARKER3.2.2 DATA RANDOMIZATION3.2.3 FRAME VALIDATION3.2.4 QUANTIZATION 3.3 BASIC CONVOLUTIONAL CODE SPECIFICATION3.4 PUNCTURED CONVOLUTIONAL CODES matlab中的 comm.ConvolutionalEncode…

javascript学习记录:location.hash的用法和说明

location.hash 是 JavaScript 中 Web API window.location 对象的一个属性&#xff0c;它返回 URL 的 hash 部分&#xff08;从 ‘#’ 符号开始的部分&#xff09;。这个属性常常用于单页面应用&#xff08;SPA, Single Page Application&#xff09;中&#xff0c;通过改变 UR…