当前位置: 首页 > web >正文

SpringBoot项目创建,三层架构,分成结构,IOC,DI相关,@Resource与@Autowired的区别

Spring官网:Spring | Home

项目创建问题

如果Spring官方脚手架创建失败可以使用阿里云URL地址创建。点击Sever URL后面的齿轮,输入https://start.aliyun.com

三层架构:

分层结构:

@Autowired //表示自动注入依赖
private UserDao userDao;

IOC

要把某个对象交给IOC容器管理,需要在对应的类上加上如下注解之一:

注意:申明bean时,可以通过注解的value属性指定bean的名字,如果没有指定,默认为类名首字母小写。

DI

基于@Autowired进行依赖注入的常见方式有如下三种:

1.

优点:代码简洁、方便快速开发

缺点:隐藏了类之间的依赖关系、可能破坏类的封装性

2.

优点:能清晰的看见类的依赖关系、提高了代码的安全性

缺点:代码繁琐、如果构造参数过多,可能导致构造函数臃肿 当前类中只存在一个构造函数的时候,@Autowired可以省略

3.

优点:保持了类的封装性,依赖关系更清晰

缺点:需要额外编写setter方法,增加了代码量

  • @Autowired注解,默认是按照类型进行注入的。

  • 如果存在多个相同类型的bean,将会报错:

对于这种情况,在这里提供三种解决方案:

  • @Primary:提升某个bean的优先级,从而注入指定的这个bean。

  • @Autowired+@Qualifier:指定要注入的bean。

  • @Resource:指定要注入bean的名字。

@Resource与@Autowired的区别

  • @Autowired是Spring框架提供的注解,而@Resource是JavaEE规范提供的

  • @Autowired默认是按照类型注入,而@Resource默认是按照名称注入

http://www.xdnf.cn/news/15776.html

相关文章:

  • Camera相机人脸识别系列专题分析之十七:人脸特征检测FFD算法之libhci_face_camera_api.so 296点位人脸识别检测流程详解
  • Flutter——Android原生View是如何通过Flutter进行加载
  • 关于Mysql开启慢查询日志报错:13 - Permission denied的解决方案
  • logback日志控制服务器日志输出
  • 对Yii2中开启`authenticator`后出现的跨域问题-修复
  • 图机器学习(11)——链接预测
  • 现代R语言【Tidyverse、Tidymodel】的机器学习方法
  • Typecho博客集成阿里云CDN+OSS实现全站加速方案
  • 关于字符编辑器vi、vim版本的安装过程及其常用命令:
  • 第七章 愿景09 海波龙的坑
  • 数字化转型:概念性名词浅谈(第三十讲)
  • Kotlin集合过滤
  • 文档处理控件TX Text Control系列教程:使用 C# .NET 将二维码添加到 PDF 文档
  • 从拆分到导出图片,这款工具如何简化PDF处理流程
  • 基于R语言piecewiseSEM结构方程模型在生态环境领域实践技术应用
  • 无标记点动捕:如何突破传统娱乐边界,打造沉浸式交互体验
  • RuoYi-Cloud框架功能分析与请求处理流程解析
  • docker,防火墙关闭后,未重启docker,导致端口映射失败
  • 【3D并排条状图】:附Origin详细画图教程
  • CertiK创始人顾荣辉出席上海Conflux大会,聚焦Web3全球化中的安全与合规路径
  • 区块链加密技术全景解析
  • (nice!!!)(LeetCode 每日一题) 2163. 删除元素后和的最小差值 (贪心+优先队列)
  • Java学习第五十三部分——后端常用函数
  • 从抓包GitHub Copilot认证请求,认识OAuth 2.0技术
  • 性能远超Spring Cloud Gateway!Apache ShenYu如何重新定义API网关!
  • 集成开发环境:在IntelliJ IDEA中高效运行与调试Spring Boot
  • LangChain 源码剖析(三):连接提示词与大语言模型的核心纽带——LLMChain
  • Mock 单元测试
  • AI驱动数据质量优化:破局数据治理难题
  • PyCharm高效入门指南