赶紧收藏!2024 年最常见 100道 Java 基础面试题(四十八)

上一篇地址:赶紧收藏!2024 年最常见 100道 Java 基础面试题(四十七)-CSDN博客

九十五、spring支持几种bean的作用域?

Spring框架支持多种Bean的作用域,每种作用域都定义了Spring容器如何管理和创建Bean的实例。以下是Spring支持的Bean作用域:

  1. singleton(单例)

    • 默认作用域。对于在Spring IoC容器中定义为singleton的Bean,容器将只创建一个Bean实例。
  2. prototype(原型)

    • 对于定义为prototype的Bean,每次请求(通过容器的getBean方法)或注入时,Spring容器将创建一个新的Bean实例。
  3. request

    • 每次HTTP请求,都会创建一个新的Bean,该Bean仅在当前HTTP请求内有效。
  4. session

    • 每次HTTP会话期间,都会创建一个新的Bean,同一个用户的多次请求将共享同一个Bean实例。
  5. application

    • 在同一个Web应用程序中,每个ServletContext都会创建一个Bean实例,所有用户的请求共享同一个实例。
  6. websocket

    • 每次WebSocket连接,都会创建一个新的Bean实例,该Bean仅在当前WebSocket连接内有效。

除了上述作用域,Spring还支持自定义作用域。从Spring 3.1开始,可以定义自己的作用域,通过实现org.springframework.beans.factory.config.Scope接口。

说明:

  • 单例和原型作用域是通常用于所有Spring应用程序的两种基本作用域。
  • 请求、会话、应用程序和WebSocket作用域是仅适用于基于Web的Spring应用程序的特定作用域。
  • 每种作用域都有其特定的用例和限制。例如,对于需要共享状态的Bean,请求作用域可能不是最佳选择,因为每个请求都会创建一个新的实例。
  • 作用域的选择取决于Bean的生命周期要求以及应用程序的特定需求。

使用示例:

在Spring配置中,可以这样指定Bean的作用域:

<!-- XML配置方式 -->
<bean id="mySingletonBean" class="com.example.MyClass" scope="singleton"/>
<bean id="myPrototypeBean" class="com.example.MyClass" scope="prototype"/>

或者使用注解:

// 注解配置方式
@Configuration
public class AppConfig {@Bean(scope = "singleton")public MyBean mySingletonBean() {return new MyBean();}@Bean(scope = "prototype")public MyBean myPrototypeBean() {return new MyBean();}
}

在实际应用中,开发者应根据Bean的用途和需求来选择合适的作用域。

九十六、spring自动装配bean有哪些方式?

Spring框架的自动装配(Autowiring)是一种在Spring容器中自动注入Bean依赖的功能。Spring提供了几种自动装配的方式,允许开发者根据需要选择最适合的方法。以下是Spring支持的自动装配方式:

  1. 1、@Autowired 注解

    • 是最常用的自动装配方式,可以放在构造器、Setter方法、普通方法、普通字段上。Spring容器在创建Bean时,会尝试根据类型自动注入相应的依赖。
    public class MyComponent {@Autowiredprivate DependencyBean dependencyBean;
    }
  2. 2、@Qualifier 注解

    • 当存在多个相同类型的Bean时,@Autowired 可能不知道要注入哪一个。使用 @Qualifier 注解可以指定注入哪一个Bean。
    @Autowired
    public void setDependency(@Qualifier("specificBean") DependencyBean bean) {this.dependency = bean;
    }
  3. 3、@Value 注解

    • 用于将配置文件中的值注入到Bean的字段中。这可以是外部属性文件中的值,或者是一个表达式的结果。
    public class MyComponent {@Value("${my.property}")private String myProperty;
    }
  4. 4、@Resource 注解

    • Java标准注解,也可以用于自动装配,但它的装配行为与 @Autowired 略有不同。@Resource 可以通过名称进行注入,而 @Autowired 默认通过类型进行注入。
    public class MyComponent {@Resourceprivate DependencyBean dependencyBean;
    }
  5. 5、@Inject 注解

    • 这是Java标准注解,与 @Autowired 类似,也可以用于自动装配Bean。
    public class MyComponent {@Injectprivate DependencyBean dependencyBean;
    }
  6. 6、Java配置类

    • 在使用Java配置类时,可以通过@Bean注解方法的参数来自动装配依赖。
    @Configuration
    public class AppConfig {@Beanpublic MyComponent myComponent(DependencyBean dependencyBean) {return new MyComponent(dependencyBean);}
    }
  7. 7、XML配置

    • 在传统的XML配置方式中,可以使用 <property> 或 <constructor-arg> 元素来指定自动装配。
    <bean id="myComponent" class="com.example.MyComponent"><property name="dependencyBean" ref="dependencyBean" />
    </bean>

    8、自动装配的细粒度控制:通过在 @Autowired 注解上使用 required 属性,可以指定某个依赖是否必须被自动装配。

  8. public class MyComponent {@Autowired(required = false)private DependencyBean dependencyBean;
    }

    9、自动装配的排序

    • 使用 @Order 或 @Priority 注解可以控制自动装配的顺序,这在处理多个自动装配候选者时非常有用。

每种自动装配方式都有其使用场景和优缺点。通常情况下,推荐使用 @Autowired 注解,因为它提供了最灵活的自动装配能力,并且是Spring特有的注解,更易于与Spring的其他特性集成。然而,在某些情况下,如需要符合Java EE规范或使用特定的装配规则,其他注解可能会更加适用。开发者应根据项目的具体需求和设计原则来选择最合适的自动装配方式。

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

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

相关文章

论文:论面向服务的架构设计

题目 在面向服务的架构&#xff08;Service-Oriented Architecture&#xff0c;SOA&#xff09;中&#xff0c;服务的概念有了延伸&#xff0c;泛指系 统对外提供的功能集。例如&#xff0c;在一个大型企业内部&#xff0c;可能存在进销存、人事档案和财务等多个系统&#xff…

Java程序运行流程

Java运行流程 Java源代码 — 编译工具 —> Java字节码文件 — 运行工具 —> Java程序运行 Java程序的基本单位 类 Java程序执行入口 main方法

盘点那些年我们一起玩过的网络安全工具

一、反恶意代码软件 1.Malwarebytes 这是一个检测和删除恶意的软件&#xff0c;包括蠕虫&#xff0c;木马&#xff0c;后门&#xff0c;流氓&#xff0c;拨号器&#xff0c;间谍软件等等。快如闪电的扫描速度&#xff0c;具有隔离功能&#xff0c;并让您方便的恢复。包含额外…

项目中使用Elasticsearch的API相关介绍

项目中使用Elasticsearch的API相关介绍 0、域映射类型 text&#xff1a;会分词&#xff0c;不支持聚合对当前搜索关键词&#xff0c;先自身分词&#xff0c;分成多个词&#xff0c;然后去一个一个的词去利用倒排索引去查询es索引库一般应用在搜索关键字匹配的字段的类型。 商…

上海市计算机学会竞赛平台2020年8月月赛丙组促销骰子

题目描述 小爱的商店正在促销。顾客在付款的时候&#xff0c;有机会掷一次骰子&#xff0c;如果掷出 66&#xff0c;可以获得优惠&#xff0c;并且可以继续掷骰子&#xff0c;直到出现不是 66 的情况&#xff0c;或掷三次为止。获奖规则如下&#xff1a; 如果没有 66&#xf…

【C#】某AGV调度系统源码笔记(十二)

AGV调度服务的核心类库 小车事件参数 两个公共属性&#xff1a;车辆信息、事件描述。一个构造函数传入两个参数赋值给属性。 核心数据类 初始化及存储调度系统中所有的档案信息。 多个静态公共属性存储不同类型的系统数据&#xff1a;是否全局服务、数据库操作对象、系统参数集…

Beego 使用教程 6:Web 输入处理

beego 是一个用于Go编程语言的开源、高性能的 web 框架 beego 被用于在Go语言中企业应用程序的快速开发&#xff0c;包括RESTful API、web应用程序和后端服务。它的灵感来源于Tornado&#xff0c; Sinatra 和 Flask beego 官网&#xff1a;http://beego.gocn.vip/ 上面的 bee…

P2234 [HNOI2002] 营业额统计

题目描述 Tiger 最近被公司升任为营业部经理&#xff0c;他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger 拿出了公司的账本&#xff0c;账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日&#xff0c;大…

对话机器人技术解说

一、RAG介绍 如何不通过微调模型来提高LLM性能&#xff0c;检索增强生成&#xff08;RAG&#xff09;是未来的发展方向。 Embedding&#xff1a;将文档的句子或单词块转换为数字向量。就向量之间的距离而言&#xff0c;彼此相似的句子应该很近&#xff0c;而不同的句子应该离…

react-native 渲染引擎经历了什么

React Native 的渲染引擎经历了多个迭代&#xff0c;不断优化和改进。以下是一些较为显著的迭代&#xff1a; 原生组件封装&#xff1a;最初的 React Native 版本是通过 JavaScript 渲染 UI&#xff0c;并通过桥接层将 UI 转化为原生组件。随着发展&#xff0c;React Native 开…

Spring的监听器使用(实用,直接拿去修改可用)

一&#xff0c;前言 这里我们以ApplicationListener为例&#xff0c;简单说明一下监听器如何使用。 本人基本只输出实用&#xff0c;即用的代码&#xff0c;希望能帮助到各位&#xff0c;如果想研究底层逻辑&#xff0c;大家可自行根据代码去类源码查看。 监听器的使用主要分…

美易官方:收盘美股收涨纳指创历史新高,市场关注CPI通胀数据

​收盘之际&#xff0c;美股市场呈现出一派欣欣向荣的景象&#xff0c;各大指数纷纷收红&#xff0c;尤其是纳斯达克指数更是创下了历史新高&#xff0c;市场气氛热烈而积极。这一日的交易过程中&#xff0c;投资者们信心满满&#xff0c;积极寻觅着能够带来丰厚回报的投资机会…

上层建筑(理解)

上层建筑(Superstructure)是指建立在一定经济基础上的社会意识形态以及与之相适应的政治法律制度和设施等的总和。它包括阶级关系&#xff08;基础关系&#xff09;、维护这种关系的国家机器、社会意识形态以及相应政治法律制度、组织和设施等。 上层建筑与经济基础对立统一。建…

用go语言写一个代码,加班就自动给老婆发信息,下班自动提醒的代码

文章推荐 1 作为程序员&#xff0c;开发用过最好用的AI工具有哪些&#xff1f; 2 Github Copilot正版的激活成功&#xff0c;终于可以chat了 3 idea,pycharm等的ai assistant已成功激活 4 新手如何拿捏 Github Copilot AI助手&#xff0c;帮助你提高写代码效率 5 Jetbrains的a…

相机模型,坐标变换,畸变

小孔成像模型 墨子就记录了小孔成像是倒立的。这从几何光学的角度是很好理解的&#xff1a;光沿直线传播&#xff0c;上方和下方的光线交叉&#xff0c;导致在成像平面位置互换。 小孔的大小有什么影响&#xff1f; 小孔越大&#xff0c;进光量变大了&#xff0c;但是成像平…

第二步 完善MBR

文章目录 前言一、什么是MBR&#xff1f;二、我们需要什么样的MBR&#xff1f;三、设计我们的MBR&#xff01;1、打印“1 MBR”2、加载次引导程序——loader 四、实践检验&#xff01; 查看系列文章点这里&#xff1a; 操作系统真象还原 前言 在上一篇文章 第一步 从启动BIOS开…

社交电商的三大模式,新零售招商模式策划

链动21奖励模式&#xff0c;七人拼团模式拆解&#xff0c;分享购模式解析 坐标&#xff1a;厦门&#xff0c;我是易创客肖琳 深耕社交新零售行业10年&#xff0c;主要提供新零售系统工具及顶层商业模式设计、全案策划运营陪跑等。 随着数字时代的到来&#xff0c;“互联网”概…

PyCharm2023 社区版安装 +中文语言包+配置教程+Python环境搭建

一、Python 安装 我们在安装Pycharm之前&#xff0c;首先要先安装Python环境也就是安装Python解释器 因为PyCharm是一个用于编写和调试Python代码的开发工具&#xff0c;而Python解释器是用于解释执行Python代码PyCharm需要依赖Python解释器来执行Python代码&#xff0c;因此…

R语言贝叶斯方法在生态环境领域中的应用

贝叶斯统计已经被广泛应用到物理学、生态学、心理学、计算机、哲学等各个学术领域&#xff0c;其火爆程度已经跨越了学术圈&#xff0c;如促使其自成统计江湖一派的贝叶斯定理在热播美剧《The Big Bang Theory》中都要秀一把。贝叶斯统计学即贝叶斯学派是一门基本思想与传统基于…

R语言基础--文件读写

From生物技能树&#xff08;R第五节&#xff09; 文章目录 一、文件读写1.注意用project管理工作目录2、文件读取1、读取.txt文件2、读取.csv文件注意&#xff1a;数据框不允许重复的行名 3.数据框的导出4.读取文件的其他方式(用于读取/导出文件的R包)--经验1.base2.readr3.dat…