3.springboot-容器机制-@注解

news/2025/10/16 22:25:50/文章来源:https://www.cnblogs.com/tlnshuju/p/19146754

3.springboot-容器机制-@注解

2025-10-16 22:23  tlnshuju  阅读(0)  评论(0)    收藏  举报

Spring传统注解

说明:这些在Spring中的传统注解通过仍然有效,凭借这些注解能够给容器注入组件

@Component

@Controller

@Service

@Repository

SpringBoot自己的注解


@Configuration

通过@Configuration创建配置类来注入组件

1.Spring的传统方式

输出

2.SpringBoot的@Configuration方式

解读
1.@Configuration标识这是一个配置类,等价于配置文件
2.程序员可能通过@Bean注解注入bean对象到容器

3.当一个类被@Configuration标识,该类-BeanConfig也被作为一个Bean会注入容器

通过1) 默认单例,能够用@Scope("prototype")设置成多例

2)注意事项和细节

1.SpringBoot2新增特性:proxyBeanMethods指定Full模式和Lite模式

2.部署类可以有多个,就和Spring可以有多个ioc配置文件是一个道理

@Import

通过@Import来注入组件,给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名

@Import({Dog.class,Cat.class})

@Conditional

条件注解说明

1.条件装配:满足Conditional指定的件,则进行组件注入
2.@Conditional是一个根注解,下面有很多扩展注解

扩展注解的作用:

应用实例

1.要求:演示在SpringBoot,如何通过@ConditionalOnBean来注入组件
2.只有在容器中有name=monster_nmw组件时,才注入dog01,代码如图

添加条件注解。name,只检查名字,对类型不做要求。

修改Bean的参数,使其满足条件name=monster_nmw。

通过这样就能够在容器中获取了

实例2

如果容器中没有name=monster_nmw的Bean,则注入下面的实例。常用于克服循环依赖问题。

@ImportResource

通过作用:原生配置文件引入,也就是许可直接导入Spring传统的beans.xml,能够认为是SpringBoot对Spring容器材料的兼容

参数:locations,别名value,而value可以省略。

配置多个

配置绑定

@ConfigurationProperties

一句话:使用Java读取到SpringBoot核心配置文件application.properties的内容,并且把它封装到JavaBean中

应用实例

1.需求:将application.properties指定的属性值k-v和JavaBean绑定

2.配置
@Component 把Furn注入容器中
@ConfigurationProperties,prefix说明前缀prefix是furn01。使用配置文件的属性值赋值

配置绑定还有第2种方式(了解即可):

1)之前是通过@Component注入Furn的Bean,然后再利用的@ConfigurationProperties。假设把@Component注释掉了,@ConfigurationProperties会检查Furn没有注入,导致报红

2)在设置类应用注解,启用配置属性@EnableConfigurationProperties,参数是Furn.class类型

使得上面的@ConfigurationProperties能够生效,同时注入Furn。感觉不如和@Component的组合好用。

注意事项和细节

1.中文乱码

假如application.properties有中文,需要转成unicode编码写入,否则出现乱码

配置含中文

页面显示乱码

使用工具转码

修改配置即可

2.配置文件错误提示

使用@ConfigurationProperties(prefix="furn01")会提示如下信息,但是不会影响启用

在pom.xml中添加依赖,即可

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

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

相关文章

苹果M5芯片正式登场 一文带你了解三款新品有何升级

苹果M5芯片正式登场 一文带你了解三款新品有何升级Posted on 2025-10-16 22:25 lzhdim 阅读(0) 评论(0) 收藏 举报昨天苹果突然带来了M5芯片,并发布了全新的14英寸MacBook Pro、新款iPad Pro以及新一代Vision Pr…

日志分析-windows日志分析base

简介 客户反映自己的用户在4月6日中午12点左右被挤掉线了,请你上机排查安全事件。 连接信息: 用户名/密码Administrator/4210bf@ RDP 连接端口3389 连接用户名/密码 Administrator/4210bf? 1、客户机的系统安全日志…

2025/10/16 模拟赛笔记 - sb

2025/10/16 模拟赛笔记 A. cipher 期望得分:100pts 实际得分:100pts 时间:50min 简单题,但是我是 fvv,有些细节调了会儿 B. seq 期望得分:100pts 实际得分:80pts 时间:1h 挂分原因:没有初始化导致有些不合法的…

神经网络之Softmax激活函数求导过程 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

课后作业3

https://files.cnblogs.com/files/blogs/847991/课后作业3.rar?t=1760623964&download=true

KMP和Manacher

以下代码相关注释未完善,大体内容如下: #include <iostream> #include <vector> #include <string> #include <string_view>#define S(X) for (char i : X) {\std::cout << i;\}\cl…

experiment2

Task1 问题1: srand(time(NULL));的作用:经过查询,发现这行代码用于初始化随机数生成器的种子,srand()是设置随机种子的函数,time(NULL)返回当前系统时间,将当前时间作为种子,确保每次程序运行时产生的随机数序列不同.…

索引有什么作用?

一句话概念 索引(Index) 就像是数据库里的“目录”或“书的索引页”。 它的主要作用是:加快查询速度,减少数据库扫描整张表的次数。📖 举个简单的例子 假设你有一个商品表 products,里面有几万条记录。 如果你执…

关于卷积神经网络(CNN)的入门学习报告

关于卷积神经网络(CNN)的入门学习报告 在观看了B站上关于卷积神经网络的系列教学视频后,我对CNN的基本原理和核心组件有了初步的认识。 一、 核心动机:解决全连接网络处理图像时的困境 首先,为什么要用CNN?传统的…

【记录】Ubuntu|Ubuntu服务器挂载新的硬盘的流程(开机自动挂载) - 指南

【记录】Ubuntu|Ubuntu服务器挂载新的硬盘的流程(开机自动挂载) - 指南2025-10-16 21:43 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: …

10月16日日记

1.今天体测50米,引体向上等。 2.明天学习英语 3.底层无法处理的异常要抛出,有明确处理策略时才捕获,切忌捕获后什么都不做。

LinuxC++——etcd-cpp-api精简源代码函数参数查询参考 - 教程

LinuxC++——etcd-cpp-api精简源代码函数参数查询参考 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

TELUS如何通过Google技术栈实现业务增长与生产力跃升

本文详细介绍了加拿大通信技术公司TELUS通过部署ChromeOS、Google Workspace、Chrome Enterprise Premium和Cameyo构建企业级技术栈,实现登录速度提升3倍、降低运营成本并改善客户服务体验的数字化转型实践。编辑注 今…

云服务器上部署 EasyTier中转服务器

云服务器开放端口 控制台中放开11010端口 连接云服务器安装软件 wget -P /root/ https://ghfast.top/https://github.com/Doboo/scripts/blob/main/easytier.sh && chmod 777 /root/easytier.sh 设置组网信息 …

问世界

在这个世界上,是否所有的问题都有答案?还是说这个世界本身就是个巨大的问题?

为 .NET 10 GC(DATAS)做准备

原作者:maoni 原文链接:https://maoni0.medium.com/preparing-for-the-net-10-gc-88718b261ef2在 .NET 9 中,我们默认启用了 DATAS。但 .NET 9 并不是长期支持(LTS)版本,因此很多人会在升级到 .NET 10 时首次获得…

实用指南:Kotlin协程 vs Java虚拟线程:从Continuation挂起到ForkJoin调度,解锁现代并发新范式

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

LLM学习记录DAY3

📘今日学习总结 一、语言模型基础能力的建立:预训练 1.1 预训练的核心思想目标:通过大规模无监督文本学习语言表示。 方式:自回归预测下一个词:\[\mathcal{L}_{\text{LM}}(\mathbf{u}) = \sum_{t=1}^{T} \log P(…