初识Spring(普通方式Bean的读取过程)

news/2024/5/9 0:23:28/文章来源:https://blog.csdn.net/tl2267190799/article/details/130313758

1.SpringBoot 相⽐于 Servlet 的优点总结

1. 添加外部 jar 更容易,不易出错(版本问题⽆需关注);
2. 调试项⽬更加⽅便,⽆需配置 Tomcat;
3. 发布项⽬更加⽅便,⽆需配置 Tomcat;
4. 添加路由更加⽅便,⽆需每个访问地址都添加⼀个类。

2.Spring框架设计思想

2.1 Spring的概念

Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,是Java企业级应用的框架。Spring 是包含了众多⼯具⽅法的 IoC 容器。

 2.2 IoC容器和DI

IoC = Inversion of Control ,是“控制反转”的意思,也就是说 Spring 是⼀个“控制反转”的容 器。

传统的创建对象,A对象需要使用B对象:
A对象不掌握B对象的控制权,控制反转。

作用:普通开发的代码耦合性高,控制反转为了降低耦合性;

IoC的概念的作用?

Ioc是一个思想,控制反转的意思,将控制权反转给Spring;Spring是一个IoC容器,对象的创建和销毁的权利都交给Spring来管理了,它本身又具备了存储对象和获取对象的能力。
1.存对象
2.取对象

 Spring IoC的优点:

1.实现解耦合
2.使用更加方便(不再需要创建,关注这个对象背后的依赖关系了) A-》B-》C-》D-》E
3.更加高效

DI(Dependency Injection):依赖注入

就是由 IoC 容器在运⾏期间,动态地将某种依赖关系注⼊到对象之中。所以,依 赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,就是指通过引⼊ IoC 容 器,利⽤依赖关系注⼊的⽅式,实现对象之间的解耦。

依赖注入:将依赖的某个对象注入(拿到当前类当中);

IoC是一种思想,而DI是主动获取对象;

2.3IoC和DI的关系和区别?

IoC控制反转,IoC是一种思想,控制反转的思想;

DI 依赖注入,是具体的实现。

2.4 Spring最核心的功能

IoC容器,取bean和存bean;

3.Spring项目的bean读取

1.创建Spring项目

a.创建一个maven项目

b.引入Spring依赖和lombok依赖(在pom.xml下)

https://mvnrepository.com/artifact/org.springframework/spring-context

引入5.x版本

<dependencies><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.13</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version>
</dependency>
</dependencies>

c.创建一个启动类(作用:为后面从spring容器中获取beam做准备)

 

2.存储Bean对象

a.创建一个Bean对象()

2.存储Bean对象a.创建一个Bean对象()b.通过Spring配置文件(Spring.xml)  

b.通过Spring配置文件(Spring.xml),spring.xml在resources文件夹下。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:content="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><bean id="student" class="Student"></bean></beans>

3.读取Bean

a.得到Spring对象(ApplicaContext \BeanFactory)

b.通过Spring对象getBean方法获取到Bean对象(DI操作)

c.使用Bean

public class App2 {public static void main(String[] args) {//1.得到SpringApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");//2.根据名称和类型共同访问Student student = context.getBean("student",Student.class);//3.使用beanSystem.out.println(student.toString());}
}

4.ApplicationContext 和 BeanFactory区别(面)

1.继承关系和功能⽅⾯来说:

Spring 容器有两个顶级的接⼝:BeanFactory 和 ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能⼒,⽽ ApplicationContext 属于 BeanFactory 的⼦类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性, 还添加了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持。

2.从性能⽅⾯来说:ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,消耗的资源更多⽽ BeanFactory (懒加载)是需要那个才去加载那个,因此更加轻量,加载时消耗的资源较少

注意:⽽ ClassPathXmlApplicationContext 属于 ApplicationContext 的⼦类,拥有 ApplicationContext 的所有功能,是通过 xml 的配置来获取所有的 Bean 容器的。

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

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

相关文章

Redis学习笔记大全

文章目录 1、redis概述和安装1.1、安装redis1.2、启动redis方式1&#xff1a;前台启动&#xff08;不推荐&#xff09;方式2&#xff1a;后端启动&#xff08;推荐&#xff09; 1.3、关闭redis1.4、进入redis命令窗口1.5、redis命令大全1.6、redis介绍相关知识 2、redis 5大数据…

C#:如何用分部类将一个大文件改为多个小文件?

很多时候我们会发现&#xff0c;写来写去&#xff0c;一个文件慢慢就变得很大了&#xff0c;行数过千基本上就维护比较困难。 将公共代码模块化&#xff0c;可以减少一些代码&#xff0c;也是非常有效的。 那还有其它办法吗&#xff1f; 用 分部类 可以解决。 下面是简单的…

Java基础--->并发部分(1)

文章目录 线程基本概念线程的创建方式线程调度-------常用的方法线程的生命周期和状态并发编程的根本原因Java内存模型(JMM)多线程核心的根本问题volatile关键字保障原子性synchronized和ReentrantLock的区别 线程基本概念 ​ 进程是程序的一次执行过程&#xff0c;是系统运行程…

机器学习实战教程(十):逻辑回归

概述 逻辑回归&#xff08;Logistic Regression&#xff09;是一种用于解决二分类或多分类问题的统计学习方法。它以自变量线性组合的形式进行建模&#xff0c;并使用Sigmoid函数将结果映射到[0, 1]的值域内&#xff0c;表示样本属于某个类别的概率。 Logistic Regression是最…

STM32CubeMX配置I2C通讯

1.如上图所示点击New Project 2.如上图所示选择自己所开发的新品最后双击芯片型号 3.配置RCC&#xff0c;我的芯片使用的是外部高速晶振。这里如图所选。 4.配置一下串口 5.配置I2C 6.根据自己的硬件选择时钟源和主频 6.①填写项目名②选择项目路径③选择开发环境④获取代码 …

活动目录(Active Directory)安全审计

延迟响应变化的影响可能会使原本应该微不足道的颠簸滚雪球变成无法弥补的损害。这在 Windows Active Directory 环境中更为重要&#xff0c;因为这种延迟造成的损害可能会使组织损失数百万美元&#xff01;在这种情况下&#xff0c;需要一个警惕的警报系统&#xff0c;该系统可…

云原生-k8s核心概念(pod,deploy,service,ingress,configmap,volume)

Gitee-k8s学习 云原生实战-kubernetes核心实战 namespace Namespace是kubernetes系统中的一种非常重要资源&#xff0c;它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离 Pod Pod可以认为是容器的封装&#xff0c;一个Pod中可以存在一个或者多个容器。 De…

从零搭建MySQL监控平台(mysql-exporter+Prometheus+Grafana)

文章目录 一、软件安装二、 软件配置配置mysql_exporter配置prometheus配置Grafana 本文是我自己在Macbook上本地从零开始搭建一套MySQL监控平台&#xff0c;监控的也是我本机的MySQL&#xff0c;过程包括prometheus、mysql_exporter、Grafana的配置与下载。 一、软件安装 我是…

Python一行代码实现文件共享【内网穿透公网访问】

目录 1. 前言 2. 视频教程 3. 本地文件服务器搭建 3.1 python的安装和设置 3.2 cpolar的安装和注册 4. 本地文件服务器的发布 4.1 Cpolar云端设置 4.2 Cpolar本地设置 5. 公网访问测试 6. 结语 转载自内网穿透工具的文章&#xff1a;Python一行代码实现文件共享【内网…

践行公益担当|人情如故,爱心依旧

爱心助学 情暖童心 随着改革开放&#xff0c;少数民族地区发生了翻天覆地的变化&#xff0c;城乡经济持续发展&#xff0c;人民生活水平日益提高。但对于很多居住在偏远山区的民族自然村&#xff0c;由于山区的地形限制&#xff0c;自然生存环境恶劣&#xff0c;交通及文化、教…

Revit砌体排砖的几种方法对比

方法简介 传统砌体深化排砖是绘图者使用CAD 软件通过二维想象进行排布&#xff0c;在墙面转角、两面或多面墙相互咬砌的位置&#xff0c;门窗洞口过梁的位置&#xff0c;构造柱等位置由于二维图形的局限性很难观察出排布是否合理。然而复杂区域砌体排布若出错…

捷报连连丨小匠物联SILA第六届“智光杯”荣获两项跨界大奖

2023年4月26日&#xff0c;SILA第六届“智光杯”跨界奖项名单公布。 喜讯传来&#xff0c;小匠物联荣获SILA第六届“智光杯”跨界奖项-全屋智能及商用系统优秀新供应链奖、智能照明新锐优秀新供应链奖。 “智光杯”“智光杯”由上海浦东智能照明联合会&#xff08;SILA&#xf…

23.4.25总结

复习了MYSQL数据库的主键和外键的知识&#xff1a; 在设计表时&#xff0c;可以通过外键这个按钮&#xff0c;更改Update rule&#xff08;更新规则&#xff09;和Delete rule&#xff08;删除规则&#xff09;。 外键行为 默认情况下是&#xff1a;NO ACTION、RESTRICT 两…

【22-23 春学期】人工智能基础--AI作业2-监督学习

【22-23 春学期】AI作业2-监督学习_HBU_David的博客-CSDN博客 用自己的语言&#xff0c;解释以下概念 1 结构风险最小化 2 正则化 3 线性回归 4 逻辑斯蒂回归 5 Sigmoid 与 SoftMax 函数 6 决策树 7 信息熵 条件熵 信息增益 8 线性判别分析 LDA 9 概率近似正确 PAC …

最新:机器学习在生态、环境经济学中的实践技术应用及论文写作

查看原文>>>最新&#xff1a;机器学习在生态、环境经济学中的实践技术应用及论文写作 目录 专题一、理论基础与软件介绍 专题二、数据的获取与整理 专题三、常用评价方法与相关软件详细教学&#xff08;案例详解&#xff09; 专题四、写作要点与案例的讲解 近年来…

新手必看:蓝牙耳机什么牌子的好用?2023年蓝牙耳机排名

上班通勤、健身运动、游戏娱乐都离不开蓝牙耳机&#xff0c;蓝牙耳机市场这几年逐渐饱和&#xff0c;涌现了大量的品牌&#xff0c;蓝牙耳机什么牌子的好用成为热议话题&#xff0c;新手们在挑选时会参考排行榜&#xff0c;小编接下来将盘点2023年蓝牙耳机排名。 ●JEET Air 2蓝…

01 背包 (二维 )

首先是我对背包问题的理解&#xff1a; 有一个背包可以放下 n kg&#xff0c;有一些物品&#xff0c;价值和重量一一对应&#xff0c;问题是&#xff0c;需要怎样才能使背包中的价值最大&#xff1f; 不同的规则对应不同的背包问题 01背包&#xff1a;每一个物品只能被放入一次…

gl-opendrive插件(车俩3D仿真模拟自动驾驶)

简介 本插件基于免费opendrive开源插件、Threejs和Webgl三维技术、vue前端框架&#xff0c;blender开源建模工具等进行二次开发。该插件由本人独立开发以及负责&#xff0c;目前处于demo阶段&#xff0c;功能还需待完善&#xff0c;由于开发仓促代码还需优化。 因此&#xff…

el-input-number 输入框添加单位

需求 使用 element-ui 的 InputNumber 控件,实现金额填写,需要在数字后面添加一个单位:元 实现效果 代码部分 <template><el-dialogclass="morendialog":title="(formData.id ? 修改 : 新增) + title":visi

webhub123 设计师好用的笔刷纹理网站收录​

整理了一些可以免费下载的好用的笔刷和纹理资源网站&#xff0c;收录到 webhub123 设计师好用的笔刷纹理网站收录​http://www.webhub123.com/#/home/detail?projectHashid31645930&ownerUserid21336964 收录效果如下&#xff0c;每个网站显示为一张图片&#xff0c;点击…