SprigBoot中的配置优先级 Bean管理

黑马程序员JavaWeb开发教程

文章目录

  • 一、配置优先级
    • 1.1 SpringBoot 中支持三种格式的配置文件
    • 1.2 Java系统属性 & 命令行参数
    • 1.3 总结
  • 二、Bean管理
    • 2.1 获取bean
      • 2.1.1 在默认情况下
    • 2.2 bean 作用域(实际开发中一般不需要考虑)
      • 2.2.1 bean的作用域
      • 2.2.2 配置bean的作用域
      • 2.2.3 注意事项
    • 2.3 第三方bean
      • 2.3.1 @Bean
      • 2.3.2 注意事项
      • 2.3.3 @Component 及衍生注解与@Bean 注解使用场景

一、配置优先级

1.1 SpringBoot 中支持三种格式的配置文件

  1. 三种格式配置文件:
    • application.properties server.port=8080
    • application.yml
    • application.yaml
server:
 port: 8080
  1. 他们的优先级从左到右依次降低
  2. 注意事项:在项目开发式推荐同意使用一种格式的配置(yml是主流)

1.2 Java系统属性 & 命令行参数

  • 命令行参数的优先级高于Java系统属性
  1. Java系统属性
-Dserver.port=8080
  1. 命令行参数
--server.port=8080
  1. 使用方法
    • 执行Maven打包指令package 得到一个打包好的项目
      在这里插入图片描述
    • 执行Java指令运行 jar包
java -Dserver.port=8080 -jar tlias-web-management-0.0.1-SNAPSHOT.jar
java -jar tlias-web-management-0.0.1-SNAPSHOT.jar --server.port=8080

1.3 总结

命令行参数 > Java系统属性 > application.properties > application.yml > application.yaml

二、Bean管理

2.1 获取bean

2.1.1 在默认情况下

  • spring项目启动时,会把bean都创建好放在IOC容器中,如果想要主动获取这些bean,可以通过如下方式
  1. 根据name获取bean:Object getBean(String name)
  2. 根据类型获取bean:
    <T> T getBean(Class<T> requiredType)
  3. 根据name获取bean(带类型转换):<T> T getBean(String name,Class<T> requiredType)
  • 上述所说的【spring项目启动时,会把bean都创建好】还会收到作用域及延迟初始化影响,这里主要针对于默认的单例非延迟加载的bean而言

2.2 bean 作用域(实际开发中一般不需要考虑)

2.2.1 bean的作用域

  • Spring 支持五种作用域,后三种在web环境才生效
    在这里插入图片描述

2.2.2 配置bean的作用域

  • 可以通过 @Scope 注解来配置bean的作用域
    在这里插入图片描述

2.2.3 注意事项

  1. 默认 singleton 的bean,在容器启动时被创建,可以使用 @Lazy 注解来延迟初始化(延迟到第一次使用时)
  2. protoType的bean,每一次使用该bean的时候都会创建一个新的实例
  3. 实际开发中,绝大部分Bean是单例的,也就是说绝大部分bean不需要配置scope属性

2.3 第三方bean

2.3.1 @Bean

  1. 如果要管理的bean对象来自于第三方(不是自定义的),是无法用@Component及衍生注解声明bean的,就需要用到@Bean注解。【下例是直接在启动类中管理第三方bean对象了,不推荐】
    在这里插入图片描述
    在这里插入图片描述
  2. 若要管理第三方bean对象,建议对这些bean进行集中分类配置,可以通过@Configuration注解声明一个配置类
    在这里插入图片描述

2.3.2 注意事项

  1. 通过@Bean注解的name或者value属性,可以声明bean的名称,如果不指定,那么bean的名称默认就是方法名
  2. 如果第三方bean需要依赖其他的bean对象,直接在bean定义方法中设置形参即可,容器会根据类型自动装配
    在这里插入图片描述

2.3.3 @Component 及衍生注解与@Bean 注解使用场景

  1. 项目中自定义的,使用@Component及其衍生注解
  2. 项目中引入第三方的,使用@Bean注解

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

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

相关文章

XML 相关漏洞风险研究

前言 经常看到有关 XXE 的漏洞分析&#xff0c;大概知道原理&#xff0c;但是对 XML 中相关的定义却一知半解。XEE 全称为 XML External Entity 即 XML 外部实体&#xff0c;但除了常见的 EXP 还有哪些触发方法&#xff1f;XML 相关的漏洞除了 XXE 还有什么其他攻击面&#xf…

已办理劳务资质,为何无法在全国建筑市场网查询到企业?

已办理劳务资质的企业无法在全国建筑市场网&#xff08;四库一平台&#xff09;查询到&#xff0c;可能的原因如下&#xff1a; 数据更新延迟&#xff1a; 全国建筑市场监管公共服务平台&#xff08;四库一平台&#xff09;的数据更新可能存在延迟。新获得的劳务资质信息在平台…

系统架构设计师【第14章】: 云原生架构设计理论与实践 (核心总结)

文章目录 14.1 云原生架构产生背景14.2 云原生架构内涵14.2.1 云原生架构定义14.2.2 云原生架构原则14.2.3 主要架构模式14.2.4 典型的云原生架构反模式 14.3 云原生架构相关技术14.3.1 容器技术14.3.2 云原生微服务14.3.3 无服务器技术14.3.4 服务网格 14.4 云原生…

Arthas使用教程——JVM常用命令

JVM相关命令 dashboard——当前系统的实时数据面板 显示当前 tomcat 的实时信息。 使用方式&#xff1a;dashboard 数据说明 ID: Java 级别的线程 ID&#xff0c;注意这个 ID 不能跟 jstack 中的 nativeID 一一对应。 NAME: 线程名 GROUP: 线程组名 PRIORITY: 线程优先级…

网站入门:Flask用法讲解

Flask是一个使用Python编写的轻量级Web服务框架&#xff0c;旨在帮助开发人员快速构建和部署Web应用程序。下面将对Flask进行更为详细的解释说明&#xff0c;并展示其使用示例与注意事项&#xff1a; 1.解释说明 定义及特点: Flask以其简洁和灵活著称&#xff0c;允许开发者以…

一个弹出的虚假安全警告去除

虚假的安全警告 poratus.azurewebsites.net Pornographic spyware detected! Remove viruses with Avira Antivirus 通过 Microsoft Edge GPT-4 (OpenAI) 这个提示可能是一个虚假的安全警告&#xff0c;被称为“恐吓软件”&#xff08;scareware&#xff09;&#xff0c;旨在…

直流输电系统氧化锌ZnO电阻设计方案

氧化锌限压器是超高压直流输电系统的主要过电压保护装置。现代直流输电系统的换流站都采用品闸元件作为换流阀,高压晶闸阀的绝缘是非自恢复的,对过电压一分敏感,耐压特性与波头关系很小,只要电压上升到某一定值时,将立即发生击穿,造成损坏。因此,往往将ZnO限压器直接跨接在桥阀…

Python量化交易学习——Part4:基于基本面的单因子选股策略

技术分析与基本面分析是股票价格分析最基础也是最经典的两个部分。技术分析是针对交易曲线及成交量等指标进行分析,基本面分析是基于公司的基本素质进行分析。 一般来说选股要先选行业,在选个股,之后根据技术分析选择买卖节点,因此针对行业及个股的基本面分析是选股的基础。…

【旧文更新】【优秀课设】基于FPGA的Verilog HDL自动售货机

【旧文更新】基于FPGA的Verilog HDL自动售货机 文章目录 关于旧文新发FPGACortex-M架构SysTick系统定时器阻塞和非阻塞延时 附录&#xff1a;压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什么是大端和小端数据传输中的大小端总结大小端转换函…

HTTPS 为什么比 HTTP 更安全?

HTTPS 为什么比 HTTP 更安全&#xff1f; 在当今互联网环境中&#xff0c;安全性是至关重要的。无论是浏览网站还是进行在线交易&#xff0c;确保数据传输的安全性都是用户和企业的共同目标。HTTP 和 HTTPS 是两种用于传输网页数据的协议&#xff0c;但它们之间的安全性存在显…

常见算法(基本查找、二分查找、分块查找冒泡、选择、插入、快速排序和递归算法)

一、常见算法-01-基本、二分、插值和斐波那契查找 1、基本查找/顺序查找 需求1&#xff1a;定义一个方法利用基本查找&#xff0c;查询某个元素是否存在 数据如下&#xff1a;{131&#xff0c;127&#xff0c;147&#xff0c;81&#xff0c;103&#xff0c;23&#xff0c;7&am…

k8s学习--Secret详细解释与应用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Secret什么是Secret?Secret四种类型及其特点Secret应用案例&#xff08;1&#xff09;将明文密码进行base64编码&#xff08;2&#xff09;编写创建secret的YAML文…

如何设置让背景颜色不包括 padding 部分,顺带全面学习 background-clip 属性(可以实现文字渐变)

先解决需求 实现背景颜色不包括 padding 部分&#xff0c;直接给容器添加 css 属性&#xff1a;background-clip:content-box; 示例代码&#xff1a; .content-box-example {background-color: lightblue;padding: 20px;border: 1px solid black;background-clip: content-bo…

vue项目出现多次ElMessage弹框

问题&#xff1a; 解决方法&#xff1a; let message null if (message null) { message ElMessage.error(“登录过期,请重新登录”); } 最终效果&#xff1a;只出现一个弹框

AI大模型在穿戴设备健康中的心率深度融合与案例分析

文章目录 1. 架构设计2. 应用场景3. 实现步骤3.1 步骤1&#xff1a;数据预处理3.2 步骤2&#xff1a;边缘计算初步分析3.3 步骤3&#xff1a;数据上传到云端3.4 步骤4&#xff1a;云端复杂分析3.5 步骤5&#xff1a;深度学习模型训练与部署 4. 云端API设计4.1 安装Flask4.2 API…

centos7.8安装Mysql8.4

在集群中我们选择将Mysql安装在slave01节点上。 1.在官网下载mysql安装包MySQL :: Download MySQL Yum Repository 下载后上传到slave01节点的/opt/software目录下。 2.切换到root用户下&#xff08;切换到root用户操作&#xff09; 3.查看和删除安装的MySQL软件包和依赖包 r…

logback删除日志文件和文件夹

​​​​​一&#xff0c;事由和源码 logback版本1.2.11 网上找了很多都是无法删除文件夹的&#xff0c;原先使用的TimeBasedRollingPolicy无法删除日志的文件夹&#xff0c;有很多空的日期文件夹&#xff0c;于是查看TimeBasedRollingPolicy源码发现有校验不删除文件夹&#x…

k8s练习--StorageClass详细解释与应用

文章目录 前言StorageClass是什么 一、实验目的配置过程 二、实验环境实验步骤一、配置网络存储NFS&#xff1a;1.主机基础配置2.配置 NFS: 二、开启rbac权限:三、创建nfs-deployment.yaml四、创建storageclass资源五、验证&#xff1a;1&#xff0e;创建PVC验证2.创建一个pod验…

Pycharm SSH远程连接时出现报错,测试 SFTP 连接,连接到 ‘connect.westb.seetacloud.com‘ 失败

问题由来 很离谱&#xff01;今天本来打算租借AutoDL的显卡完成一项深度学习的任务&#xff0c;很离谱的是同步文件夹的时候报了标题说的错。 就很莫名奇妙&#xff0c;一天都在网上找解决办法&#xff0c;结果都不对头。 其他报错 最后摸索着&#xff0c;在使用pycharm远程登…

基于django | 创建数据库,实现增、删、查的功能

1、在cmd中&#xff0c;输入指令进入mysql终端&#xff1a; mysql -u 用户名 -p 2、输入mysql的密码 3、输入指令&#xff0c;显示出所有的数据库 show databases; 4、输入指令创建表&#xff1a; create table 表名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 5、use …