Spring基础知识(二)

目录

1.Spring Bean是什么

2.Spring提供的配置方式

3.Spring bean中的scope

4.Spring bean容器的生命周期

5.Spring的内部bean

6.Spring装配是什么

7.自动装配模式

8.自动装配的局限性

9.基于注解配置容器

10.如何启动注解装配


1.Spring Bean是什么

Spring官方文档对于bean的解释为:

In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container.

翻译过来就是:在Spring中,形成你的应用程序的主干,并且被Spring IoC容器管理的对象叫做bean;一个bean就是被Spring IoC容器实例化、装配并且管理的对象。
 

2.Spring提供的配置方式

基于xml配置

        在xml文件中设置<bean>标签来配置

基于注解配置

        在类或方法上使用注解进行配置

基于Java API配置

        使用@Bean和@Configuration实现

3.Spring bean中的scope

Spring bean支持五种scope:

Singleton:Spring IoC仅有一个单实例

Prototype:每次请求都会产生一个新的实例

Request:每次Http请求都会产生一个新实例,该bean仅在当前Http请求内有效

Session:每次Http请求都会产生一个新的bean,该bean仅在当前Http session中有效

Global-session:仅在 全局portlet Session的生命周期范围内有效

4.Spring bean容器的生命周期

* 第一步:实例化

    * 通过反射/工厂模式

* 第二步:依赖注入:即为属性赋值

* 第三步:初始化:需要自定义init_method

* 第四步:销毁:需要自定义destroy_method

    * 要想销毁,需要使用configurable ApplicationContext才能调用close

    * configurableApplicationContext是ApplicationContext的子接口,其中扩展了刷新和关闭容器的方法
补充:在生命周期初始化前后,后置处理器会添加额外的操作;此时在ioc容器中配置后,会对每一个bean起作用(了解)

5.Spring的内部bean

        将一个bean A 作为另一个bean B 的属性时,该bean A 被成称为内部bean

6.Spring装配是什么

        装配即将bean在Spring容器中组合在一起

        前提:Spring容器知道需要什么bean以及容器如何使用依赖注入将bean绑定,同时装配bean

7.自动装配模式

        no:默认设置;表示没有自动装配

        byName:根据bean的名称注入对象的依赖项;匹配并装配属性和xml文件中相同名称定义的bean

        byType:根据类型注入对象依赖项;属性的类型和xml文件中的bean名称匹配则装配属性

详细自动装配模式见:

Spring的重点知识_perseveregz的博客-CSDN博客

 

8.自动装配的局限性

        1.基本元数据类型(字符串、类)无法自动装配

        2.自动装配可能不太精确

9.基于注解配置容器

        将类标注为@Configuration,将类中的方法标注为@Bean,从而将类配置到到容器中

10.如何启动注解装配

        默认情况下,Spring容器中没有打开注解装配;需要配置<context:annotation-config/>

<beans>
    <context:annotation-config/>
    <!-- bean definitions go here -->
</beans>

        

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

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

相关文章

客户端负载均衡工具Ribbon

一 什么是Ribbon Ribbon介绍 目前主流的负载方案分为以下两种&#xff1a; 集中式负载均衡&#xff0c;在消费者和服务提供方中间使用独立的代理方式进行负载&#xff0c;有硬件的&#xff08;比如 F5&#xff09;&#xff0c;也有软件的&#xff08;比如 Nginx&#xff09;…

10大白帽黑客专用的 Linux 操作系统

平时在影视里见到的黑客都是一顿操作猛如虎&#xff0c;到底他们用的都是啥系统呢&#xff1f; 今天给大家分享十个白帽黑客专用的Linux操作系统。 ▍1. Kali Linux Kali Linux是最著名的Linux发行版&#xff0c;用于道德黑客和渗透测试。Kali Linux由Offensive Security开发&…

哨兵架构redisCluster-Redis(五)

上篇文章介绍了主从架构以及lua脚本。 主从架构&lua脚本-Redis&#xff08;四&#xff09;https://blog.csdn.net/ke1ying/article/details/131159229 Sentinel集群 主从的搭建我们已经完成&#xff0c;但如果主节点宕机&#xff0c;这时候导致整个redis服务不可用怎么办…

打造智能生活方式

2个互联网工具与你分享 分享一&#xff1a; 随记单词是一款功能强大的单词记忆和管理应用程序。它为用户提供了便捷的学习工具和智能化的记忆方式&#xff0c;帮助用户轻松有效地记忆和掌握单词。 随记单词的特点之一是个性化记忆计划。用户可以根据自己的学习进度和需求&am…

【LeetCode热题100】打卡第21天:最小路径和爬楼梯

文章目录 【LeetCode热题100】打卡第21天&#xff1a;最小路径和&爬楼梯⛅前言 最小路径和&#x1f512;题目 爬楼梯&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第21天&#xff1a;最小路径和&爬楼梯 ⛅前言 大家好&#xff0c;我是知识汲取者&#…

牛客网基础语法41~50题

牛客网基础语法41~50题&#x1f618;&#x1f618;&#x1f618; &#x1f4ab;前言&#xff1a;今天是咱们第五期刷牛客网上的题目。 &#x1f4ab;目标&#xff1a;熟练用数学知识来解决编程问题&#xff0c;会利用每种循环。 &#x1f4ab;鸡汤&#xff1a;压抑了&#xff0…

什么是远程工具,远程工具推荐

在当今数字化时代&#xff0c;远程工作正在变得越来越普遍。这种趋势不仅使企业管理更加便利&#xff0c;节省了时间和资源&#xff0c;同时也使员工更加自由和灵活。许多远程工作都需要使用到远程工具。本文将对远程工具进行简介和阐述。 什么是远程工具 远程工具是一种数字…

互斥锁实现线程互斥(嵌入式学习)

互斥锁实现线程互斥 互斥锁的概念互斥锁的函数示例代码 互斥锁的概念 互斥锁&#xff08;Mutex&#xff09;是一种用于多线程编程的同步原语&#xff08;synchronization primitive&#xff09;&#xff0c;用于实现线程之间的互斥访问共享资源。互斥锁提供了一种机制&#xff…

wsl安装ubuntu并设置gnome图形界面详细步骤(win11+ubuntu18)

0.前言 wsl确实是个好东西&#xff0c;不过之前配了好几次都没有成功&#xff0c;因为wsl本身确实是有bug。当时配的时候查到GitHub上的一个issue还没被修好。现在重新配一下。 我的环境是Windows11家庭版。区别于win10&#xff0c;win11安装完默认就是wsl2。 1.下载 首先打…

[RPC]:Feign远程调用

文章目录 摘要1 RPC框架-Feign1.1 什么是Feign1.2 Feign解决的问题1.2.1 使用RestTemplate发送远程调用代码1.2.1.1 项目示例调用链路1.2.1.2 代码逻辑1.2.1.3 代码实现1.2.1.4 存在的问题 1.3 Feign如何使用1.3.1 使用逻辑1.3.2 引入依赖1.3.3 启动类添加注释开启feign功能 摘…

3.数据操作

SQL句子中语法格式提示&#xff1a; 1.中括号&#xff08;[]&#xff09;中的内容为可选项&#xff1b; 2.[&#xff0c;...]表示&#xff0c;前面的内容可重复&#xff1b; 3.大括号&#xff08;{}&#xff09;和竖线&#xff08;|&#xff09;表示选择项&#xff0c;在选择…

网络安全|渗透测试入门学习,从零基础入门到精通—渗透中的开发语言

目录 前面的话 开发语言 1、html 解析 2、JavaScript 用法 3、JAVA 特性 4、PHP 作用 PHP 能做什么&#xff1f; 5、C/C 使用 如何学习 前面的话 关于在渗透中需要学习的语言第一点个人认为就是可以打一下HTML&#xff0c;JS那些基础知识&#xff0c;磨刀不误砍柴…

键盘按键事件 通过键盘上下左右按键移动界面上图标

#main.c文件 #include “keyevent.h” #include int main(int argc, char *argv[]) { QApplication a(argc, argv); KeyEvent w; w.show(); return a.exec();} #include “keyevent.h”//头文件 #ifndef KEYEVENT_H #define KEYEVENT_H #include #include #include cl…

机器学习、计算机视觉和深度学习

机器学习、计算机视觉和深度学习 1 什么是机器学习&#xff1f;2 机器学习的类型3 什么是计算机视觉&#xff1f;4 计算机视觉的机器学习应用5 总结参考 这篇博客将简要介绍&#xff1a;机器学习和用于计算机视觉的机器学习。 想象一下&#xff1a;你可以使用人脸检测算法在图…

自定义修改Typora原生默认github风格样式

使用typora的时候&#xff0c;想要自定义一些颜色、字体&#xff0c;或者修改一些设置&#xff0c;这个时候需要修改或者自己编写css文件。 修改涉及的样式&#xff1a; ① 目录 ② 块应用 我还是比较喜欢原生自带的默认样式&#xff08;github样式&#xff09;&#xff0c; 但…

chatgpt赋能python:Python怎么退出程序:让你轻松掌握退出Python程序的方法

Python怎么退出程序&#xff1a;让你轻松掌握退出Python程序的方法 Python是一种功能强大、易于学习且具有广泛应用的编程语言。在Python开发中&#xff0c;经常需要退出程序&#xff0c;以便在不需要时释放内存和其他资源。那么&#xff0c;Python怎么退出程序&#xff1f;本…

【MySQL】从0到1打开数据库管理

目录 前言&#xff1a; 一.认识MySQL 二.安装MySQL数据库 三、启动和停止MySQL服务 3.1启动服务的两种方式 3.2停止服务的两种方式 四.链接客户端 4.1使用自带的命令行窗口 4.2使用系统自带的命令窗口 五.MySQL是存储数据的模型 六.SQL语言 结尾&#xff1a; 前言&a…

HTML(结构)+CSS(样式基础)

一、HTML前期准备 1. 认识HTML HTML&#xff08;Hyper Text Markup Language&#xff09;&#xff1a;超文本标记语言主要通过标签对网页中的文本、图片、音频、视频等内容进行描述个人理解&#xff1a;对所有需要描述的内容使用标签进行表示 2. HTML布置页面的固定结构 每一个…

Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差(C#)

Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机BGAPI SDK和图像时间戳的技术背景Baumer工业相机使用BGAPISDK控制相机数据流的方式1.引用合适的类文件2.使用BGAPISDK获取时间戳的…

【Java基础学习打卡06】编程语言

目录 前言一、计算机语言是什么&#xff1f;二、计算机语言分类三、计算机语言介绍1.C语言2.C语言3.Java语言4.Python语言 总结 前言 本文主要是理解计算机语言是什么&#xff0c;有哪些分类&#xff0c;分类下有哪些编程语言&#xff0c;以及了解主流的编程语言。 一、计算机…