SpringBoot的单例模式特点
创始人
2025-05-30 10:06:37

目录

Spring使用的设计模式

单例模式简介

Spring所管理的注解

Spring获取对象时加不加注解有什么区别?


Spring使用的设计模式

spring默认所有的bean都是单例的

设计模式:单例模式。比如说 一个类只产生一个对象

单例模式简介

单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。

Spring所管理的注解

@Controller,

表明这个类是一个控制器类,和@RequestMapping来配合使用拦截请求,这样请求会在完成后转向一个视图解析器。但是在大多微服务搭建的时候,前后端会做分离。所以请求后端只关注数据处理,后端返回json数据的话,需要配合@ResponseBody注解来完成。

@RestController,

它是@Controller和@ResponseBody的合集,返回的也是一个json

一个类被加上@RestController 注解,数据接口中就不再需要添加@ResponseBody。更加简洁。

@Autowride,

把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。

@Resource,

@Resource和@Autowired一样都可以用来装配bean,都可以标注字段上,或者方法上。 @Resource注解不是spring提供的,是属于J2EE规范的注解。

这两个注解的区别就是匹配方式上有点不同,@Resource默认按照名称方式进行bean匹配,@Autowired默认按照类型方式进行bean匹配。

@Requestbody,

主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据)

@ResponseBody,

表示该方法的返回结果直接写入HTTP response body中

一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。

@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解;提供路由信息,负责URL到Controller中的具体函数的映射,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

Spring获取对象时加不加注解有什么区别?

Spring在启动的时候会扫描所有被Spring管理的类 

当我们想用这个对象的时候直接加上@Autowired注解 交给spring去管理

如果我这个类想使用spring的对象,那么我们这个类也需要交给spring去管理

当一个接口有多个实现类的时候:

第一种解决方案:用list去接

 第二种:

直接用具体的实现类的去用

 当出现@Autowired拿不到对象的时候(这个对象不是spring提供的而是自己new出来的)就可以用一个工厂类 强制从spring工厂(容器)中提取出来

//强制从工厂里取出来
SpringFactoryUtils.getBean(xxxController.class)
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;import java.util.Map;@Component
public class SpringFactoryUtils implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {SpringFactoryUtils.applicationContext = applicationContext;}/*** 获取applicationContext** @return*/public static ApplicationContext getApplicationContext() {return applicationContext;}/*** 通过name获取 Bean.** @param name* @return*/public static Object getBean(String name) {return getApplicationContext().getBean(name);}/*** 通过class获取Bean.** @param clazz* @param * @return*/public static  T getBean(Class clazz) {return getApplicationContext().getBean(clazz);}/*** 通过name,以及Clazz返回指定的Bean** @param name* @param clazz* @param * @return*/public static  T getBean(String name, Class clazz) {return getApplicationContext().getBean(name, clazz);}public static  Map getBeanMap(Class clazz) {return getApplicationContext().getBeansOfType(clazz);}
}

相关内容

热门资讯

本地和远程连接Oracle数据... 本地和远程连接Oracle数据库登录的方式 1. 本地Oracle数据库登录的几种方式 (1)使用...
今年1号台风迟迟不来,好事还是... 文/陈溯截至目前,西北太平洋未生成任何热带气旋。今年北半球台风为何集体“迟到”?今年一号台风为何迟迟...
ABAP 调用HTTP上传附件... 1、这篇文章的由来 之前已经发表了《ABAP 调用HTTP上传附件》的文章,详细介绍了...
iperf3 服务端和客户端配... 本文目录1、服务端和客户端配置参数交换过程和状态机变化2、服务端代码调用过程3、客户端代码调用过程4...
SpringBoot集成qua... 第一步创建SpringBoot项目的过程我就不在演示了!自己找找教程吧!...
Redis快速恢复数据 Redis的flushall/flushdb命令可以做数据清除,对于Redis的开发和运维人员有一定...
动词的时态 前言(英语时态的四大难点) 难点一:时&态未分清 你必须要...
【华为OD机试 2023最新 ... 题目描述 放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的数组A),他...
和美药业IPO:年亏超1亿元,... 文 | 医药研究社 港股18A再添一员? 近日,港交所披露,赣州和美药业股份有限公司(以下简称“和...
阿里突然上AI编程大招!AI ... 智东西 作者 | ZeR0 编辑 | 漠影 智东西5月30日报道,短短两周之内,新一波AI编程热潮密...
持续火热!密集限购 今年以来北交所市场行情持续火热,资金加速涌入,多家基金公司出手控制旗下主题基金规模。近期,天弘基金、...
三瑞智能创业板IPO获受理 拟... 上证报中国证券网讯(记者 操子怡)近日,深交所官网显示,南昌三瑞智能科技股份有限公司(以下简称“三瑞...
50个小众且实用的神级网站 昨晚熬了个大夜,终于把我收藏夹里的50个网站整理出来了,话不多说...
伊能静都在卖的水晶,你的玄学宝... 花朵财经观察出品撰文丨学研“不是黄金买不起,而是水晶更具性价比。3、2、1,上链接!”听着主播的甜言...
Android 异形屏设备设置... 问题 由于业务需要,应用需要配置沉浸式界面,但设置全屏时,...
分析| AI智能生图前景几何? 如果说此前的AI绘画是人工智障,“AI不仁,以万物为刍狗”,...
【每日随笔】西游记相关随笔 (... 文章目录一、天庭组织架构二、佛门组织架构三、天庭的盘根错节四、西游记中的人情世故 西游记 和 红楼...
mysql 核心日志 redo... 文章目录 binlogbinlog 设计原理binlog 记录内容binlog 写入策略 redol...
“伽玛刀之王”大医集团赴港IP... 本报(chinatimes.net.cn)记者郭怡琳 于娜 北京报道近日,“伽玛刀之王”西安大医集团...
Python基础(十九):数学... 简介 Python 中数学相关模块,如下所示:模块描述math提供了对 ...
Java之链表(不带头结点,带... 目录 一.链表 1.什么是链表 2.链表的分类  二.不带头结点单向链表的非递归实现 1.接口的定...
浙大学霸创业23年,干出250... 文 | 杨万里电影《中国合伙人》中有个场景,孟晓骏(邓超饰演)作为当时的一名高材生,他抱着很高的期望...
Docker 常用【基础|镜像... Centos7 下载|安装|配置|卸载 Docker:https://liush.bl...
dmpython win7安装... 系统环境:win7,python3.6,dm8_20230106_x86_win_64...
荣晟环保实控人被采取强制措施 ... 中经记者 陈家运 北京报道5月26日晚间,荣晟环保(603165.SH)公告披露,其于当日收到控股股...
特朗普,又加关税! 当地时间5月30日,美股三大指数盘中突然大幅走低,午后开始有所拉升,最终仅道指艰难翻红。截至收盘,道...
上海证监局副局长赵国富:深化资... 中经记者 罗辑 北京报道2025年陆家嘴论坛召开在即。5月30日,上海市政府举行新闻发布会,介绍20...
“紫金系”狂飙突进:拟分拆黄金... 中经记者 李哲 北京报道 5月26日,紫金矿业(601899.SH、02899.HK)召开董事会,审...
使用anaconda 安装pa... conda create -n paddlespeech python=3.7 cudnn&...
拒做第二个泡泡玛特要做“中国万... 盲盒的故事,资本市场还买账吗?作者|刘钦文编辑|武丽娟LABUBU有多火?从BLACKPINK成员L...