当前位置: 首页 > news >正文

Spring 容器

目录

  • 1、框架
    • 1.1、框架的作用
    • 1.2、核心库--bean
  • 2、spring 项目的搭建
  • 3、bean 的注册和注入
    • 3.1、bean 的注册
    • 3.2、bean 的注入

1、框架

1.1、框架的作用

我们使用Java作为开发语言时,几乎都需要使用ee框架(ssm),其中的 ssm 指的是 spring(boot):基本的脚手架,springmvc:专门做web开发,mybatis:数据库框架。广义的说,框架满足某些特定功能(比较多且强大),我们是在这些框架封装的代码设计上进行开发。使用框架可以提高开发效率,让我们能更好的管理项目。

1.2、核心库–bean

和集合框架中的容器类似,bean容器的主要作用是存储和使用bean对象:

  • 注册:创建一个bean对象,存储到容器中。 如:map.put(“id”, new Person())
  • 注入:从容器中取一个对象,注入到某个地方(某个对象的属性,方法参数)。如 Person p = map.get(“id”); p.think();

2、spring 项目的搭建

  • 搭建 Maven 项目

在这里插入图片描述

  • 在 pom.xml 文件中添加 spring-beans、spring-context 两个依赖包

在这里插入图片描述

  • 如果引入失败(依赖项是红色的),则检查idea中 maven配置是否正确

在这里插入图片描述

  • 修改完 pom.xml 后,一定要刷新 maven 面板,且检查 maven 面板中依赖项是否成功引入。

在这里插入图片描述

3、bean 的注册和注入

3.1、bean 的注册

  • 创建容器,填写需要被扫描的包路径,在包及子包路径下,如果存在spring框架注解的类,就会自动注册到容器中

在这里插入图片描述

  • 类注解:在指定的包下创建类,并将其类注解,那么该类会自动注册到容器中,注册的数据是键值对,键:类名首字母小写,值:bean对象

在这里插入图片描述
在这里插入图片描述

  • @Bean方法注解:注册 bean,除了上述的类注解,还有方法注解 @Bean,注册的数据是键值对,键:方法名,值:方法返回值(注入多个对象的好处是可以根据需要在 Person 中注入指定的一个)

在这里插入图片描述

引申:类注解是注册一个单例的 Bean 对象,而 @Bean方法注解,可以注册多个 Bean 对象

总结:需要满足以下两个条件才可以自动注册:
1、在指定的包路径下
2、有 spring 框架注解
由此可得,bean 注册省略了 new 对象和容器.add/put两个步骤

3.2、bean 的注入

bean 的注入是从容器中取一个对象,注入到某个地方,这里的示例是注入到某个对象的属性中。

  • 容器中注册两个类:Person、Mobile

在这里插入图片描述

  • 在 Person 类中增加 Moblie 属性,且这里的属性是容器中的 Mobile 类

在这里插入图片描述

总结:在代码使用上带来了改变,以前是一片代码写完,现在是看起来代码没关系,但是spring已经内部建立了对象和对象间的关系(依赖关系:X x = new X(); m.x = x,此时 x 和 m 存在一定的依赖关系,即 m 依赖 x ),更多的是注解的使用。


文章转载自:
http://archaist.apjjykv.cn
http://accusable.apjjykv.cn
http://acceptive.apjjykv.cn
http://aposelene.apjjykv.cn
http://briarwood.apjjykv.cn
http://bailout.apjjykv.cn
http://agro.apjjykv.cn
http://charybdis.apjjykv.cn
http://albany.apjjykv.cn
http://cdma2000.apjjykv.cn
http://benignity.apjjykv.cn
http://bogle.apjjykv.cn
http://boise.apjjykv.cn
http://barbuda.apjjykv.cn
http://allegiant.apjjykv.cn
http://bulldog.apjjykv.cn
http://aurous.apjjykv.cn
http://akashi.apjjykv.cn
http://atremble.apjjykv.cn
http://cab.apjjykv.cn
http://acrogen.apjjykv.cn
http://byword.apjjykv.cn
http://affidavit.apjjykv.cn
http://carbonado.apjjykv.cn
http://berserk.apjjykv.cn
http://aright.apjjykv.cn
http://cervine.apjjykv.cn
http://boutonniere.apjjykv.cn
http://announciator.apjjykv.cn
http://anneal.apjjykv.cn
http://www.dtcms.com/a/33424.html

相关文章:

  • 【三十四周】文献阅读:DeepPose: 通过深度神经网络实现人类姿态估计
  • 自学网络安全(黑客技术)2025年 —100天学习计划,网络安全零基础入门到精通教程建议收藏!
  • Python 函数(传递任意数量的实参)
  • AI智算-k8s+SGLang实战:DeepSeek-r1:671b满血版多机多卡私有化部署全攻略
  • Vue02
  • hot100_300. 最长递增子序列
  • 使用FastAPI进行可视化部署
  • 应用层协议HTTP
  • 理解 预训练、微调、分布式训练
  • EWM 自动补充库存
  • 《操作系统 - 清华大学》8 -4:进程管理:进程控制结构
  • 为什么要学排序?
  • rust学习笔记5-所有权机制
  • C/C++数组的字符串与字符数组习题
  • 【蓝桥杯】第十五届省赛大学真题组真题解析
  • QT闲记-状态栏,模态对话框,非模态对话框
  • DeepSeek 助力 Vue 开发:打造丝滑的滑块(Slider)
  • VulnOSv2 靶机渗透测试
  • 基于 Python Django 的校园互助平台(附源码,文档)
  • python使用httpx_sse调用sse流式接口对响应格式为application/json的错误信息的处理
  • 内网网络安全的解决之道
  • Linux MySQL 8.0.29 忽略表名大小写配置
  • 深入理解 DOM 和 CSSOM:网页渲染的核心
  • PAT甲级 1017 Queueing at Bank
  • easyexcel和poi同时存在版本问题,使用easyexcel导出excel设置日期格式
  • ZJYYC2510. 蓝红球
  • 财务运营域——营收稽核系统设计
  • 内存对齐的原因和规则
  • C++中,运算符重载,+,-,*,/,=,+=,[]的使用
  • 利用Ai对生成的测试用例进行用例评审