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

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.dtcms.com/a/286399.html

相关文章:

  • 融合优势:SIP 广播对讲联动华为会议 全场景沟通响应提速​
  • 【PHP】Swoole:CentOS安装MySQL+Swoole
  • 强化学习框架VeRL全面解析(架构、调试、修改与应用)
  • vbox增加虚拟磁盘空间大小
  • 基于springboot+vue+mysql的在线文档管理系统的设计与实现(源码+论文+PPT答辩+开题报告)
  • ClickHouse物化视图避坑指南:原理、数据迁移与优化
  • ESP32-IDF LVGL UI 设计工具的使用
  • 海森矩阵(Hessian Matrix)在SLAM图优化和点云配准中的应用介绍
  • Go 的热重载工具 Air 详解
  • 深入理解 Spring:事务管理与事件机制全解析
  • 域名WHOIS信息查询免费API使用指南
  • 【CF】⭐Day104——Codeforces Round 840 (Div. 2) CE (思维 + 分类讨论 | 思维 + 图论 + DP)
  • 【LVGL】Linux LVGL程序几十分钟后UI卡死
  • ubuntu 安装zabbix6 agent2
  • AI进入自动驾驶时代:OpenAI发布革命性ChatGPT Agent
  • 生成式引擎优化(GEO)核心解析:下一代搜索技术的演进与落地策略
  • OpenAI最强ChatGPT智能体发布:技术突破与应用前景分析
  • 脉冲神经网络(Spiking Neural Network, SNN)与知识蒸馏(Knowledge Distillation, KD)
  • 有好内容,如何做好知识变现?
  • BIST会对锁步核做什么?
  • 深入了解直播美颜SDK:GPU加速下的美白滤镜功能实现?
  • 解决 IDEA 中 XML 文件的 “URI is not registered” 报错
  • html5+css3+canvas纯前端4字方形LOGO生成器
  • 【C# in .NET】17. 探秘类成员-构造函数与析构函数:对象生命周期管理
  • Beagle 480 USB分析仪
  • 差分数组算法
  • 柴油机活塞cad【4张】三维图+设计说明书
  • ollma dify 搭建合同审查助手
  • RabbitMQ—TTL、死信队列、延迟队列
  • ChatGPT Agent技术架构探析