【SpringBoot】SpringBoot 中 Bean 管理和拦截器的使用

news2024/11/15 21:30:25

目录

1.Bean管理

1.1 自定义Bean对象

1.2 Bean的作用域和生命周期

2.拦截器的使用


1.Bean管理

默认情况下,Spring项目启动时,会把我们常用的Bean都创建好放在IOC容器中,但是有时候我们自定义的类需要手动配置bean,这里主要介绍两种方式。

  • 直接使用注解的方式
  • 使用配置类+@Bean注解方式

1.1 自定义Bean对象

(1)使用注解的方式

这种方式主要是通过使用 @Component, @Service, @Repository, @Controller 等注解来标记类,告诉 Spring 容器这是一个应该被管理的 Bean。

(2)使用配置类

相当于我们之前使用的xml,用来自定义Bean对象,一般用来配置第三方的Bean对象。

使用:

  1. 先创建一个config包,然后创建名称为xxxConfig的普通java类,并在类上使用注解@Configuration表示该类为配置类。
  2. 在类中使用@Bean注解声明Bean方法,

 完整的配置类配置Bean如下

1.2 Bean的作用域和生命周期

Spring 容器中的 Bean 的作用域

  • Singleton:默认的作用域,Spring 容器只会创建一个实例,并将其保存在一个缓存中。
  • Prototype:每次请求都会创建一个新的 Bean 实例。
  • Request:对于每个 HTTP 请求都会创建一个新的 Bean 实例(仅适用于 Web 应用程序)。
  • Session:对于每个 HTTP Session 创建一个新的 Bean 实例(仅适用于 Web 应用程序)。
  • Global Session:针对 Portlet 应用程序,每个全局 Session 创建一个 Bean 实例

 Bean 的生命周期

Spring 容器管理着 Bean 的整个生命周期,从创建、初始化到销毁。

  1. 创建:根据定义创建 Bean 实例。
  2. 初始化:调用初始化方法(如果有的话)。可以通过 @PostConstruct 注解或 <bean init-method="..."> 标签来指定初始化方法。
  3. 销毁:当容器关闭时,调用销毁方法(如果有的话)。可以使用 @PreDestroy 注解或 <bean destroy-method="..."> 标签来指定销毁方法。

2.拦截器的使用

拦截器的特点和拦截器中的方法的使用和SpringMVC中的一致,只是配置方式有所区别。

使用

(1)创建来拦截器类,实现HandlerInterceptor接口,并重写相关的方法,并使用@Compoent配置为Bean对象。【创建拦截器】

(2)创建配置类,实现WebMvcConfigurer接口,重写addInterceptors方法,并依赖注入你写的拦截器对象,然后在addInterceptors方法中定义你要拦截的范围。【定义拦截范围】

(3)查看拦截效果,如下图,访问后页面为空白,控制台有输出,表明拦截器已经生效。

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

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

相关文章

掌握这三种方法,让你快速获取商品信息,数据采集不再难

摘要&#xff1a; 面对琳琅满目的天猫商品&#xff0c;如何迅速精准地获取所需信息成为电商竞争的关键。本文揭秘三种实战技巧&#xff0c;助你在数据采集路上快人一步&#xff0c;让繁琐的数据收集变得轻而易举。 一、如何在信息海洋中&#xff0c;快速捞取天猫商品的“珍宝…

wifi密码字典之8位纯数字

最近研究网络安全&#xff0c;对无线网络进行渗透测试&#xff0c;用了kali linux和ubuntu linux&#xff0c;比较了几个抓包与分析工具&#xff0c;最终选择了aircrack-ng&#xff0c;同样的流程用已知的wifi密码测试通过&#xff0c;对网络安全渗透测试要用到密码字典&#x…

midwayjs 无法启动 无任何日志和报错

比如我的mqtt&#xff0c;原本是直接 imports:[mqtt]&#xff0c;但无法启动 无任何日志和报错 解决直接 this.app.addConfigObject(mqtt) addConfigObject作用&#xff1a;将 MQTT 配置添加到应用的配置中。addConfigObject 方法允许你在应用初始化完成后动态地添加或更新应…

Ubuntu 添加 GitLab 官方仓库报错“curl is unable to connect to packagecloud.io over TLS”

Ubuntu 安装 Gitlab 报错“curl is unable to connect to packagecloud.io over TLS” 1 现象2 问题排查3 解决方案4 验证 1 现象 Ubuntu 上添加 GitLab 官方仓库时报错“……curl is unable to connect to packagecloud.io over TLS……” 2 问题排查 终端提示中给出两种可…

复现nnUNet2并跑通自定义数据

复现nnUNet2并跑通自定义数据 1. 配置环境2. 处理数据集2.1 创建文件夹2.2 数据集格式转换2.3 数据集预处理 3. 训练 1. 配置环境 stage1&#xff1a;创建python环境&#xff0c;这里建议python3.10 conda create --n nnunet python3.10 conda activate nnunet stage2&#x…

Kotlin 流flow、ShareFlow、StateFlow、Channel的解释与使用

一、介绍 随着Android接入kotlin开发&#xff0c;Android之前好多模式也渐渐被kotlin替代。开发模式也在做渐进的转型&#xff0c;从MVC到MVP在到MVVP以及现在的MVI等。 流IO在java中和kotlin中使用率都是比较高的&#xff0c;场景很多。如Java的IO和NIO&#xff0c;再到我们现…

使用fastzdp_sqlmodel改造fastzdp_login中关于用户注册和用户登录的接口

原本的代码 user_router.post("/register/", summary"用户注册") def register_user(username: str Body(str, min_length2, max_length36),password: str Body(str, min_length6, max_length128),db: SASession Depends(get_db), ):# 检查用户名是否已…

家政服务管理系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;管理阿姨管理&#xff0c;家政公司管理&#xff0c;服务项目管理&#xff0c;家政预约管理&#xff0c;评价管理&#xff0c;留言板管理&#xff0c;系统管理 微信端账号功能包括…

【串口助手开发】添加保存数据功能,按钮按下保存接收区所有数据

1、功能描述 想要将串口助手接收区域内所有的内容保存下来 并且通过按钮&#xff0c;按下后&#xff0c;跳出一个弹窗&#xff0c;显示保存路径&#xff0c;并且保存txt文件 按下按钮&#xff0c;保存txt数据文件。 2、代码讲解 定义一个全局变量&#xff0c;接收所有的数…

STM32第十二节(中级篇):串口通信(第二节)——串口固件库函数以及串口发送和接收代码讲解

STM32第十二节&#xff08;中级篇&#xff09;&#xff1a;串口通信&#xff08;第二节&#xff09;——串口固件库函数以及串口发送和接收代码讲解 串口固件库函数 代码片段 /** * brief USART Init Structure definition */ typedef struct {uint32_t USART_BaudRate; …

1.初识算法

1.1 算法无处不在 当我们听到“算法”这个词时&#xff0c;很自然地会想到数学。然而实际上&#xff0c;许多算法并不涉及复杂数学&#xff0c;而是更多地依赖基本逻辑&#xff0c;这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前&#xff0c;有一个有趣的事实值…

科研单位所需要的文件自动同步备份软件具有哪些特征?

科研单位进行文件同步备份是保障数据安全、提高工作效率、符合法规要求以及实现数据共享与再利用的重要措施。文件同步备份不仅能保护科研单位的研究成果&#xff0c;还能提升工作协同效率&#xff0c;具体优势体现在&#xff1a; 预防数据丢失&#xff1a;科研单位在工作中会产…

还不了解 Pinia 状态管理库⁉️

还不了解 Pinia 状态管理库⁉️&#x1f34d; 什么是Pinia❓状态管理工具⁉️&#xff1a; 学习过Vue2的小伙伴&#xff0c;一定都知道Vuex&#xff0c;什么不知道&#xff0c;请看VCR&#x1f449; &#xff1b; Vuex 是一个专为 Vue.js 应用程序设计的状态管理库&#xff0…

什么是GD32 MCU读保护?

如今电子产品市场风云变幻&#xff0c;暗流汹涌&#xff0c;有没有小伙伴遇到自己费了大力气写出来的代码&#xff0c;很容易就被别人“借鉴”了&#xff0c;真的是让闻者伤心&#xff0c;听着落泪啊。 那有没有什么方法可以防止别人将你的代码从MCU读出来呢&#xff1f;答案当…

软媒市场-解释软文发布后如何在搜索引擎持续获得曝光

软文发布后,在搜索引擎持续获得曝光是一个涉及多方面策略的过程。以下是一些关键步骤和技巧,旨在帮助软文在搜索引擎中保持较高的可见度和曝光率: 1. 关键词优化 关键词选择:首先,通过专业的关键词研究工具(如Google AdWords Keyword Planner、百度指数等)分析用户搜索习惯和热…

【C语言初阶】掌握C语言调试技巧,迈向高效编程的阶梯

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C语言 “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C语言指针 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀C语言调试技巧 &#x1f4d2;1. …

这个是git使用的合集

如果遇到了关于git和github的bug就会写这里 2024/8/16 github一直没有打卡和上传代码是因为感觉除了做项目的情况&#xff0c;普通的学习和普通的笔记没必要记在github里&#xff1b;如果是笔记类的东西为什么不记在csdn上呢&#xff1f;如果是算法题算法网站上回有记录啊&am…

第43课 Scratch入门篇:雪花随风飘

雪花随风飘 故事背景: 雪花轻轻地从灰蒙蒙的天空中飘落下来,它们像是天空中飘洒下来的羽毛,又像是冬日的精灵在翩翩起舞。每一片雪花都独一无二,它们在空中旋转、飘荡,最终缓缓降落在屋顶、树枝、街道和行人的肩头。 程序原理: 众多的雪花肯定是克隆功能,降落过程是通过…

three.js 光源、光源辅助对象和阴影简介

Three.js 光源对物体的影响 实际生活中物体表面的明暗效果是会受到光照的影响&#xff0c;比如晚上不开灯&#xff0c;你就看不到物体&#xff0c;灯光比较暗&#xff0c;物体也比较暗。在threejs中&#xff0c;咱们用网格模型Mesh模拟生活中物体&#xff0c;所以threejs中模拟…

Linux进程间通信学习记录(IPC 机制以及共享内存)

0.System V IPC机制&#xff1a; ①.IPC对象包含&#xff1a;共享内存、消息队列和信号灯集。 ②.每个IPC对象有唯一的ID。 ③.IPC对象创建后一直存在&#xff0c;直到被显示地删除。 ④.每一个IPC对象有一个关联的KEY。&#xff08;其他进程通过KEY访问对应的IPC对象&#xff…