spring-面试整理

server/2025/1/1 2:16:16/

简述 spring中如何基于注解添加bean 和装配bean

1、首先要在Spring中配置开启注解扫描

2、在具体的类上增加具体的注解

3、spring中通常使用@autowired 或者是Resource等注解进行bean的装配

总结:

装配流程:

1、实例化:spring容器根据配置或者注解创建Bean的实例

2、依赖注入:Spring容器根据bean定义,注入所需的依赖

3、初始化:Bean创建并注入依赖后,Spring会调用Bean的初始化方法(如果有定义的话)

4、Bean可以被容器管理并在应用中使用

请写出spring中常用的依赖注入方式:

1、通过setter方法注入

2、通过构造函数方法注入

总结:

setter:

1、setter 无法被修饰为不可变的

2、我们可以接收一个不存在的bean(required=false)

构造函数:

1、可以修饰为不可变的final;

2、依赖注入的bean一定是存在的(构造函数可以通过接收一个optional ,原则上不可以,但是通过这种方式实现传递一个不存在的bean )

ioc在代码块的体现:

1、bean初始化的注解(bean装配的注解)

2、依赖注入的注解(不需要手动new 一个对象 手动实例化对象,创建对象的过程由spring框架的ioc容器来执行,最终形成这个效果称为控制反转)

ioc的设计:

1、封装对象创建和生命周期管理

2、依赖注入

依赖注入是ioc容器控制反转的一种方式,容器负责将对象所需外部资源,注入到对象内部,而不是对象自己主动创建或者查找依赖

3、springioc容器通过大量使用反射机制创建和操作,通过反射容器可以在运行时动态创建对象实例。通过访问字段私有字段和方法,从而实现对对象的管理和依赖注入。

4,配置元数据,对象的配置信息可以通过xml文件,注解或者java配置类等形式提供。

这些配置元数据包括对象的创建,依赖关系和其他生命周期相关的信息,spring容器启动时,ioc容器会读取这些配置元数据,并根据这些信息创建和管理对象。

5、容器内部结构:spring ioc容器内部维护了一个bean工厂,负责创建和管理bean的实例,ioc容器会根据配置信息,创建bean的定义(beandefine)和实例话bean,为确保每一个bean都能获得它所需的bean(依赖),ioc容器还负责维护bean之间的依赖关系。

6、作用域

springioc容器通过封装对象的创建和生命周期管理,使用依赖注入来解耦对象之间的依赖关系,利用反射和配置数据源来动态的创建和管理对象。

AOP(切面编程) 是一种编程思想

它的目的是为了提高代码的模块化成都,也就是在不修改现有逻辑代码的情况下,动态的去添加或者修改代码的执行逻辑,所以我们可以见到那的理解为springAOP是用来扩展原有业务逻辑的一种思想。

Aop动态切换数据源,


http://www.ppmy.cn/server/154285.html

相关文章

前端经典面试合集(二)——Vue/React/Node/工程化工具/计算机网络

1. 说说 Vue 中的 Diff 算法 Vue 的 Diff 算法 主要用于优化虚拟 DOM 和实际 DOM 之间的比较过程。它通过以下几种策略来提高性能: 最小化对 DOM 的操作:Vue 通过在内存中构建一个虚拟 DOM 树,在虚拟 DOM 树与真实 DOM 树之间进行比较和更新…

JVMTI 笔记

JVMTI(JVM tool interface)是一套c/c开发接口,用于对JVM进行性能分析、debug、内存管理、线程分析等各种黑科技操作 JVMTI开发1个CPU Profiler: agent.c JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved) {jvmtiEnv *…

探索 .idea 文件夹:Java Maven 工程的隐形守护者

一、.idea文件夹深度解析:IntelliJ IDEA项目配置的核心 在Java Maven工程的开发环境中,.idea文件夹扮演着举足轻重的角色。这是IntelliJ IDEA项目特有的一个配置文件夹,它包含了项目所需的各种配置信息,以确保项目能够在不同的开…

【JavaEE进阶】Spring传递请求参数

目录 🎍序言 🌴传递单个参数 🍀传递多个参数 🎄传递对象 🌳后端参数重命名(后端参数映射) 🚩ReuqestParam注解 🎍序言 访问不同的路径,就是发送不同的请求.在发送…

如何在 Ubuntu 22.04 上安装 Elasticsearch

简介 在本教程中,你将学习如何在 Ubuntu 22.04 服务器上安装 Elasticsearch。此外,你还将学习如何使用 Elasticsearch REST API 索引和操作数据。 Elasticsearch 是一个基于 Apache Lucene Library 的免费分布式搜索和分析引擎。它是一个快速且可扩展的…

【落羽的落羽 C语言篇】自定义类型——联合体、枚举

文章目录 一、联合体1. 联合体类型的声明2. 联合体的特点3. 联合体的大小4. 联合体和结构体的对比 二、枚举1. 枚举类型的声明2. 枚举类型的优点 一、联合体 1. 联合体类型的声明 联合体像结构体一样,也是由一个或多个成员构成,这些成员可以是不同的类…

【大模型】wiki中文语料的word2vec模型构建

在自然语言处理(NLP)任务中,词向量(Word Embedding)是一个非常重要的概念。通过将词语映射到一个高维空间中,我们能够以向量的形式表达出词语之间的语义关系。Word2Vec作为一种流行的词向量学习方法&#x…

SPI接口

一、SPI总线 SPI接口是Motorola 首先提出的全双工三线/四线同步串行外围接口采用主从模式(Master Slave)架构。 时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB firs…