-
Spring6 思维导图
-
spring 介绍
-
Spring 是一个开源框架,为简化企业级开发而生
-
IOC(控制反转)和 AOP(面向切面)为思想内核
-
Spring6最低 JDK 版本直接跨越到 JDK17
-
Spring 体系结构
- Core Container:Spring 核心模块
-
-
IOC 控制反转思想
-
程序将创建对象的权利交给框架
-
Spring 实现 IOC
-
-
引入依赖
-
创建 POJO 类、Dao 类和接口
-
编写 XML 配置文件
<bean id="studentDao" class="com.itbaizhan.dao.StudentDaoImpl"> </bean>
-
-
容器类型
-
对象的创建方法
-
-
使用构造方法
默认使用类的孔灿构造方法创建 bean -
使用工厂类的方法
-
创建工厂类,工厂类提供创建对象的方法
public class StudentDaoFactory { public StudentDao getStudentDao(){ return new StudentDaoImpl(1); } } -
在配置文件中配置创建 bean 的方式为工厂方式
相当于先创建对象 ---> 再去使用<!-- id:工厂对象的id,class:工厂类 --> <bean id="studentDaoFactory" class="com.itbaizhan.dao.StudentDaoFactory"></bean> <!-- id:bean对象的id,factory-bean:工厂对象的id,factory-method:工厂方法 --> <bean id="studentDao" factory-bean="studentDaoFactory" factory-method="getStudentDao"></bean>
-
-
使用工厂类的静态方法
-
在上方的工厂类中加上静态 tatic
-
配置 bean 方式为工程静态方法
<!--用工厂类的静态方法创建对象 配置一个就可以了--> <bean id="studentDao" class="com.yibeigen.dao.StudentDaoFactory2" factory-method="getStudentDao"> </bean>
-
-
-
对象的创建策略
有 5 种创建方法,<bean>中的scope属性-
-
singleton:单例
-
整个项目只会创建一个对象
-
设置单例对象的创建时机
- lazy-init="false"(默认)
立即创建
容器启动,创建所有 - true:延迟创建
第一次使用了 bean 才会创建
- lazy-init="false"(默认)
-
-
prototype:多例
- 每次从容器中获取时都会创建对象
-
request:每次请求创建对象,web 中
-
session:每次会话创建对象,web 中
-
gloabal-session:一次集群环境的会话创建,web 中
-
-
-
-
-
获取对象的方式
-
-
通过 id/name 获取
<bean name / id ="studentDao" class="com.itbaizhan.dao.StudentDaoImpl2">StudentDao studentDao = (StudentDao) ac.getBean("studentDao"); -
通过类型获取
-
StudentDao studentDao2 = ac.getBean(StudentDao.class);
-
-
d/name + 通过类型 + 获取
容器中有一个接口的多个实现类对象,则获取时会报错,此时需要使用类型 +id/name 获取-
StudentDao studentDao2 = ac.getBean("studentDao",StudentDao.class);
-
-
-
-
对象的销毁时机
-
-
singleton 单例
- 容器的销毁而销毁
-
prototype 多例
- JAVA 垃圾回收机制销毁对象(因为多里的太多了)
-
request
- 当处理请求结束,bean 实例将被销毁
-
session
- 当 HTTP Session 最终被废弃的时候,bean 也会被销毁掉
-
gloabal-session
- 集群环境下的 session 销毁,bean 实例也将被销毁
-
-
-
对象的生命周期
- init-method
配置创建对象时执行的方法 - destroy-method
配置销毁对象时执行的方法
- init-method
-
-
ID
-
ID 依赖注入
- 它是 Spring控制反转思想的具体实现
- 依赖注入是为对象的属性赋值
-
Setter 注入
- setter 方法或构造方法给属性赋值
-
-
setter 方法
- 被注入类编写属性的 setter 方法
方法名:set+ 属性名 - 给需要注入属性值的中设置
- 被注入类编写属性的 setter 方法
-
构造方法
- 注入属性值的中设置
-
-
自动注入
-
自动从容器中找到相应的bean对象设置为属性值
-
全局配置
-
<beans>中设置default-autowire属性,所有 bean 对象的自动注入策略
-
-
局部配置
-
<bean>中设置autowire属性,当前 bean 对象的自动注入策略 -
autowire 的取值
- no:不会进行自动注入
- byName:查找 id与属性名相同的 bean,并进行注入,要 setter
- byType:查找类型与属性类型相同的 bean,要 setter
- constructor:查找 id 与属性名相同的 bean,要构造
-
-
注入类型
-
bean 类型
- /property>
-
简单类型
-
注入 List 集合、Set 集合
-
注入对象类型 Map 集合
-
注入 Properties 对象
- 值 1
-
-
-
自动从容器中找到相应的bean对象设置为属性值
-
-
注解实现 IOC
-
@Component
-
用于创建对象,放入 Spring 容器,相当于
<bean id="" class=""> -
注意
-
要在配置文件中配置扫描的包,扫描到该注解才能生效
- <context:component-scan base-package="com.itbaizhan">/context:component-scan>
-
默认 id 是首字母小写的类名
-
-
-
@Repository用于 Dao 层 -
@Service用于 Service 层 -
@Controller用于 Controller 层 前后端交互,控制层 -
@Scope 指定 bean 的创建策略 (单例,还是多例等)
-
-
@Autowired
- 代替
<bean>中的依赖注入配置
- 代替
-
@Qualifier
- 在按照类型注入对象的基础上,再按照 bean 的 id 注入
- 必须和 @Autowired 一起使用
-
- 注入简单数据类型的属性值
- @Value("${jdbc.username}"),获取 properties 文件
-
配置完全的注解 IOC 开发
-
@Configuration
- 表示配置类
-
@ComponentScan
- 指定 spring 在初始化容器时扫描的包
-
@PropertySource
- 代替配置文件中的 扫描配置文件
- @PropertySource("classpath:db.properties")
-
-
@Bean
- 将方法的返回值对象放入 Spring 容器中
-
@Import
- 可以为主配置类导入其他配置类
-
-
-
近期热议
推荐标签 标签
-
支付宝
29 引用 • 347 回帖 • 2 关注
支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。
-
Firefox
7 引用 • 30 回帖 • 367 关注
Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。
-
flomo
6 引用 • 144 回帖
flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。
-
坑
69 引用 • 93 回帖
一些有用的避坑指南。
-
Vue.js
269 引用 • 666 回帖 • 1 关注
Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
-
AWS
11 引用 • 28 回帖 • 2 关注
-
安装
134 引用 • 1184 回帖 • 2 关注
你若安好,便是晴天。
-
MySQL
695 引用 • 538 回帖 • 1 关注
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。
-
Kafka
36 引用 • 35 回帖
Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
-
钉钉
15 引用 • 67 回帖 • 236 关注
钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。
-
RabbitMQ
49 引用 • 60 回帖 • 342 关注
RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
-
创业
81 引用 • 1396 回帖 • 1 关注
你比 99% 的人都优秀么?
-
Netty
49 引用 • 33 回帖 • 63 关注
Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。
-
FreeMarker
23 引用 • 20 回帖 • 475 关注
FreeMarker 是一款好用且功能强大的 Java 模版引擎。
-
黑曜石
34 引用 • 333 回帖
黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。
A second brain, for you, forever.
-
jsDelivr
5 引用 • 31 回帖 • 121 关注
jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。
-
Elasticsearch
117 引用 • 99 回帖 • 191 关注
Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
-
百度
63 引用 • 785 回帖 • 46 关注
百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。
-
IDEA
182 引用 • 400 回帖
IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。
-
webpack
43 引用 • 130 回帖 • 259 关注
webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。
-
abitmean
• 44 关注
有点意思就行了
-
新人
52 引用 • 228 回帖
让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
新手上路,请谨慎驾驶! -
电影
125 引用 • 610 回帖
这是一个不能说的秘密。
-
Swift
34 引用 • 37 回帖 • 565 关注
Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。
-
音乐
63 引用 • 513 回帖
你听到信仰的声音了么?
-
TGIF
293 引用 • 4496 回帖 • 687 关注
Thank God It's Friday! 感谢老天,总算到星期五啦!
-
TensorFlow
20 引用 • 19 回帖
TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于