小白理解@Service,@Component, @Controller, @Repository, @Autowired等注入

本地如何安装midscene.js运行环境 手把手教你本地安装midscene.js运行环境 阅读详情

相关内容来自腾讯元宝, 作者也属于入门,仅做参考

入门级别的小白已经根据视频跑起来项目, 也能根据例子进行增删改查的操作, 可是总有些疑问, 我们不都是用new 创建一个实例对象, 然后使用他们的方法和属性,但springboot里有了 @Autowired就行了,
why?
后面弄明白了, 现在看菜鸟来理解

  1. @Service/@Component/@Controller/@Repository加在类上​ → 让Spring创建一个Bean实例放入容器
  2. @Autowired加在字段/构造器/方法上​ → 从容器中取出已有的Bean实例并赋值

如何大白话解释
@Service,@Component,@Controller 只有语义的区别,其实他们的作用都是一样的,就是说可以混用?但没人这么弄, 大家约定俗成: 服务层@Service, 控制层@Controller ,存储层@Repository, 其他的@Component,

他们的作用是什么?
创建Bean实例, 特别重要, 是创建一个实例, 就相当于new了,并相当于全局存储了起来, 给后面@Autowired等注解使用

// 1. Spring扫描到这个类
@Service  // ← 告诉Spring:"请创建我的实例并管理起来"
public class UserService {
    public void doSomething() {
        System.out.println("处理用户业务");
    }
}

// 2. Spring在启动时会:
//    - 创建 UserService 的实例(相当于 new UserService())
//    - 把这个实例放入"Spring容器"(一个Map结构)
//    - Bean的名字默认是类名首字母小写:userService

当运行时,spring 会扫码全局代码.Spring:“请创建我的实例并管理起来”
new UserService() 有一个userService的对象创建成功,等我们赋值调用
这里有个专有的名字 Bean实例

怎么用呢? @Autowired 来使用

@Controller
public class UserController {
    
    // 3. 这里不是"创建实例",而是"取出已有实例"
    @Autowired  // ← 告诉Spring:"请把容器里的userService实例拿给我"
    private UserService userService;  // 这里userService已经是容器里的实例
    
    public void handleRequest() {
        userService.doSomething();  // 可以直接使用
    }
}

使用注解@Autowired后就相当于赋值了
UserService userService = new new UserService();

例子:

// Spring容器就像一个超市
// 货架上已经摆好了商品(Bean实例)

// 厂家(你的类)生产商品
@Service  // ← 商品上架:把UserService实例放到"Spring货架"上
public class UserService { /* ... */ }

@Component  // ← 商品上架:把OrderService实例放到"Spring货架"上  
public class OrderService { /* ... */ }

// 顾客(其他类)来取商品
@Controller
public class UserController {
    
    @Autowired  // ← 从货架上取商品:取出UserService实例
    private UserService userService;  // 拿到手了,可以直接用
    
    @Autowired  // ← 从货架上取商品:取出OrderService实例
    private OrderService orderService;
}

整个流程 -->
Spring启动时:

  1. 扫描所有类
  2. 发现带 @Service/@Component 等的类
  3. 创建实例(调用构造方法)
  4. 处理依赖注入(如果有@Autowired的字段)
  5. 执行初始化方法(如果有@PostConstruct)
  6. 放入Spring容器(一个ConcurrentHashMap)

Spring看到@Autowired:

  1. 获取字段类型:UserService
  2. 在容器中查找UserService类型的Bean
  3. 找到:beanContainer.get(“userService”)
  4. 反射设置字段值:field.set(this, userService)

继续理解
其实不仅是类的属性可以加 属性,构造器,方法等都可以用注解@Autowired修饰

@Component
public class Example {
    
    // 方式1:字段注入
    @Autowired
    private UserService userService;
    
    // 方式2:构造器注入(Spring推荐)
    private final OrderService orderService;
    
    // 这里@Autowired告诉Spring:"调用这个构造器,并传入OrderService实例"
    @Autowired
    public Example(OrderService orderService) {
        this.orderService = orderService;  // 赋值
    }
    
    // 方式3:setter方法注入
    private ProductService productService;
    
    // 这里@Autowired告诉Spring:"调用这个方法,并传入ProductService实例"
    @Autowired
    public void setProductService(ProductService productService) {
        this.productService = productService;  // 赋值
    }
}

上面的说法不完全,完整的说法是
@Autowired能工作的前提是:当前类本身必须是Spring管理的Bean!
还记得 @Component 这个注解么, 他和其他的似乎不一样, 不在什么控制层,服务层里面
这是因为他是给普通的类用的, 普通类用了他,就能被Spring管理,里面也就可以使用@Autowired.(同时他自己也生成了Bean对象)

✅ @Autowired可以用在:
任何被Spring管理的Bean内部(@Component、@Service、@Controller、@Repository、@Configuration等)
@Bean方法的参数上
构造器、setter方法、普通方法上
❌ @Autowired不能用在:
普通的Java类(没有Spring注解的类)
静态字段上
final字段上(除非用构造器注入)


修的吗得, 不对啊
springboot里没有@Controller

有的,兄弟有的
@Controller + @ResponseBody = @RestController
这里有一段遥远的故事,关于jsp的故事

下期继续
@Resource(name = “captchaProducer”)

线性自抗扰控制(LADRC)系统算法框图 NLADRC自抗扰控制从Simulink仿真到PLC控制实现_自抗扰控制器 simulink仿真-优快云博客本文介绍了如何将ADRC自抗扰控制算法从Simulink仿真应用到PLC控制中,包括Simulink框图、TD微分器模型、MATLAB函数的使用、SCL控制代码,以及非线性状态误差反馈控制率的实现。提供了详细的MATLAB仿真步骤和PLC源代码链接。ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法-优快云博客。 阅读详情

相关推荐

自抗扰控制(ADRC)原理与MATLAB实现详解

自抗扰控制(ADRC)是一种先进的鲁棒控制策略,其核心在于通过扩张状态观测器(ESO)实时估计并补偿系统总扰动。相比传统PID控制,ADRC不依赖精确数学模型,特别适合处理非线性、时变系统。从控制原理看,ADRC将系统内部动态和外部扰动统一建模,通过带宽参数化方法实现快速响应与强抗扰能力。在工程实践中,ADRC已成功应用于无人机飞控、伺服系统等场景,MATLAB仿真显示其上升时间可比PID提升46%,抗扰动恢复时间缩短60%。典型实现包含ESO设计、扰动补偿和PD控制三部分,参数整定遵循ω₀=3~5倍系统带

weixin_33585822的博客 95

Spring注解中的常用注解@Autowired、@Resource、@Component、@Repository、@Service、@Controller

1.@Autowired 用来装配bean,都可以写在字段上,或者方法上。默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,例如:@Autowired(required=false); 该注解是通过类型来注入,如果一个类型有多个bean值的时候,会造成无法选择具体注入哪一个的情况,这时候我们就需要配合着注解@Qualif...

weixin_40159122的博客 648

【华为Hilink SDK Linux系统开发】目录 开源一小步

目录 【华为Hilink开发】第一章:华为hilink平台简介及开发流程 【华为Hilink开发】第二章:华为hilink SDK网络适配、网关添加删除 【华为Hilink开发】第三章:华为hilink SDK子设备添加、删除 【华为Hilink开发】第四章:华为hilink SDK子设备控制及同步 【华为Hilink开发】第五章:华为hilink SDK适配遇到的问题 ...

开源一小步 3619

JAVA中@Autowired @Resoure @mapper @Component @service @Repository@controller @Bean的区别

而@Conpoment可以。但是装配第三方库中的组件时,在这种情况下,是没有办法在它的类上添加@Component注解的,这时候使用配置类@Configuration和@Bean搭配的方式,实现自动化装配。@Component和@Bean的目的是一样的,都是注册bean到Spring容器中。它也是一个特殊类型的 @Component,用于将 MVC 控制器层的类标记为 Spring 的一个 Bean。它是一个特殊类型的 @Component,用于将业务逻辑层的类标记为 Spring 的一个 Bean。

2301_82032274的博客 852

wsl2上运行带有Isaac Gym的程序报错: GPU Pipeline: disabled

显示GPU Pipeline:disabled,查找相关文档发现是WSL2目前不支持Isaac Gym,时,想要在wsl2上运行,最后报错如下。

2303_78660611的博客 957

JAVA进阶面试题:如何设计一个高并发系统?

如何设计一个高并发系统? 面试官心理分析 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先。 如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。 假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿,高峰期并发量上万,甚至是十万。那么人家一定会仔细盘问你的系统架构,你们系统啥架构?怎么部署的?部署了多少台机器

uuop155的博客 1019

后端-SSH-各种注解@Autowired,@Autowired,@Controller,@Service,@Repository,@Repository

目录 @Transactional @Autowired @Controller @Service @Repository @Component @Transactional 只有@Transactional 注解应用到 public 方法,才能进行事务管理 Spring 事务管理分为编码式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。 声明

Blog belong to 二狗 957

ROS2实战:手把手教你用walking机器人仿真实现医院多楼层自动配送(含实时地图切换)

本文详细介绍了如何利用ROS2和walking机器人仿真平台实现医院多楼层自动配送系统,重点讲解了动态地图切换技术和多楼层导航的实现方法。通过实时加载地图和优化电梯过渡策略,解决了医院复杂环境下的自主配送难题,为医疗物流自动化提供了实用解决方案。

weixin_29090917的博客 362

Spring~使用注解配置开发(@Component、@Repository、@Service、@Controller)和使用JavaConfig实现配置开发

Configuration这个注解标识的类也会被spring托管, 只是他这个注解修饰的类表示这是一个配置类, 是java代码的一个配置类, 而不是一个xml文件的配置类, 使用这个注解不扫描包也可以使用, 当然也可以在其下面加上@ComponentScan(“…注解不是自己的类使用不了, 只能修饰自己的类, 对于被修饰的类, 不能引入其他类的bean对象, 维护相对复杂。我们在使用的过程中, 只需要注意必须要让注解生效, 也就是开启注解支持, 还有就是注解必须被扫描到。扫描指定包下面的注解。

2401_83915900的博客 688

基于ESM3微调的抗菌肽生成器:技术方案与实现

基于ESM3微调的抗菌肽生成器:技术方案与实现 摘要 本文提出了一种基于ESM3蛋白质语言模型的抗菌肽生成框架,采用两阶段训练策略:先在151万肽序列上预训练,再在1.3万抗菌肽数据上微调。模型能够生成具有合理长度分布、低重复率且高新颖性的抗菌肽序列。文章详细介绍了数据预处理流程、模型架构设计、训练策略及评估方法,为抗菌肽的理性设计提供了有效的计算工具。实验结果表明,该方法生成的抗菌肽序列在保持生物活性的同时具有较高的结构多样性。 关键词:抗菌肽设计;蛋白质语言模型;ESM3;深度学习;序列生成

huanghm88的专栏 175

C# + YOLO 实时摄像头检测:Emgu CV + ONNX Runtime,30FPS+ 流畅运行

很多教程只给“单张图片推理”代码,一上摄像头就卡成 PPT(<5 FPS)。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 215

Spring - 关于模式注解和注入方式的一些理解

前言 模式注解(Stereotype Annotations)是一种用于声明在应用中扮演"组件"角色的注解。如 Spring Framework 中的 @Component, @Service, @Controller, @Repository 等。只要在相应的类上标注这些注解,就能成为 Spring 中组件(Bean)。 常见的模式注解 Spring Framework 注解 场景说明 起始版本 @Component 通用组件模式注解 2.5 @Controller 控制器模式注解

Maggieq8324的博客 1542

Unreal使用nDisplay制作裸眼3D(9宫格)

摘要: nDisplay是虚幻引擎的分布式实时渲染技术,可将内容同步输出到多个显示设备(如LED墙、投影仪等),构建沉浸式可视化系统。其核心功能包括:分布式渲染(支持多台设备协同处理高分辨率内容)、空间透视校正(通过追踪观众动态调整画面几何关系)以及虚拟拍摄应用。配置时需设置集群组件(Cluster、Host、Node、Viewport)定义渲染逻辑,空间组件(nDisplayScreen、ViewPoint)确定投影关系。文中以9宫格配置为例,详细演示了从工程创建到影片渲染合成的全流程,最终通过多视口合成

TxNet 608

spring注解@service("service")括号中的service有什么用

service  是有用的相当于 xml配置中得bean  id = service  也可以不指定 不指定相当于 bean id =  com. service.service 就是这个类的全限定名,表示给当前类命名一个别名,方便注入到其他需要用到的类中;不加的话,默...

骐骥筋力成,志在万里外 2507

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java学习笔记

1、Spring中的@ Component,@ Repository和@Service注释有什么区别? 转自() 在Spring2.0之前的版本中,@Repository注解可以标记在任何的类上,用来表明该类是用来执行与数据库相关的操作(即dao对象),并支持自动处理数据库操作产生的异常 在Spring2.5版本中,引入了更多的Spring类注解:@Component,@Service,@Cont...

weixin_44007644的博客 208

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring 注解详解:从容器配置到依赖注入的最佳实践

本文系统介绍了Spring框架中的核心注解及其最佳实践。主要内容包括:1)基于注解的容器配置方法,如@ComponentScan和@Configuration;2)组件声明注解(@Component、@Service等)的使用场景与区别;3)依赖注入的三种方式及推荐方案(构造器注入优先);4)常见问题如NoSuchBeanDefinitionException、循环依赖的解决方案;5)开发中的最佳实践与注意事项。文章强调理解注解原理的重要性,避免滥用注解导致潜在问题,为开发者提供了从基础使用到进阶技巧的完整

刘一说的IT专栏 1726

你真的了解SpringBoot注解?阿里巴巴面试告诉你答案!

大家好,今天我们来探讨阿里巴巴面试中常见的SpringBoot注解!SpringBoot是Java开发的热门框架之一,掌握注解的原理与运用,对项目开发至关重要。让我们一起深入了解吧!

孤芳不自赏 1043

B站学习框架技术:Spring 基于注解的DI{@Component,@Repository,@Service,@Controller,@Value,@Autowired,@Resource}

一、Spring配置文件添加组件扫描器 如果需要使用DI注解,首先需要在Spring配置文件(通常为applicationContext.xml)中配置组件扫描器,用于扫描注解,所以一定记得在配置文件中指定注解所在的包名,最重要!!!所以一定记得在配置文件中指定注解所在的包名,最重要!!!所以一定记得在配置文件中指定注解所在的包名,最重要!!!配置文件内容如下: 配置文件中指定注解所在包名的三种方式: (1)使用多个context:component-scan指定不同的包名 <context:com

dave的技术成长之路 172

springboot2.2.X手册:36个注解详细解析,一目了然

篇幅较长,建议关注后,收藏,慢慢读。 @Component 作用及范围:把对象加载到spring容器中,最基础的存在,很多的注解都是继承它的,只有一个属性值,默认值是“”, 例子或源码: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Indexed public @interfa...

互联网应用架构 905

SpringBoot常用注解的简单说明与理解

SpringBoot常用注解的简单说明与理解

Anthony路人甲的博客 554

spring中注解配置Ioc中常用注解

使用注解注入Ioc容器时(使用时要导入aop.jar包),xml文件中需要配置告 诉其要扫描的包 <context:component-scan base-package=“包名”>之后这个将会扫描这个包下及其子 包中类和接口上的注解 @Component注解将其下方的类通过反射注入Ioc容器 属性:value指的是这个类的反射的唯一Id当不使用时是以类名且首字小写 当com...

qq_41551345的博客 273

014 Spring注解开发

狂神说Java:https://space.bilibili.com/95256449 在Spring4之后,要使用注解开发,必须要保证aop的包导入了! 使用注解需要导入contex约束,增加注解的支持! <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sc...

有人的地方,就是江湖 319

【springboot】springboot 注解|@Value注解等

@Autowired @Autowired用法详解:https://www.cnblogs.com/fnlingnzb-learner/p/9723834.html https://www.cnblogs.com/caoyc/p/5626365.html 非常好值得阅读 @Component: 这将 java 类标记为 bean。它是任何 Spring 管理组件的通用构造型。sprin...

我的笔记本 937

8_spring的注解使用

package com.aping.ui; import com.aping.service.IAccountService; import com.aping.service.impl.IAccountServiceImpl; import javafx.application.Application; import org.springframework.beans.factory.Bean...

qq_36385556的博客 444

Spring 注解大全和解释

Spring 注解使用大全

志不强者智不达,言不信者行不果 812

实习心得体会---SSM学习笔记之注解20190716

零.前言 注解的分类 1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Controller 在展现层使用,控制器的声明(C) 2.注入bean的注解 @Autowired:由Spring提供 @Inject:由JSR-330提供 @Resource:...

letgoDream的博客 450

Spring注解 @Component @Bean @Repository 注解学习总结,使用场景

@Component 理解 作用 用于类上, 一般用于声明该类,并将该类交由springIOC容器管理(就是在IOC容器中添加该类)。让spring识别到该类,作为一个组件类,然后可以通过注入的方式(@Autowired,@Resource)可以注入引用。 引用 在@Controller, @Service, @Repository 这些注解中可以看到已经加入了@Component注解,其实都是交给了Spring容器管理,使得能在项目环境中识别到该类的存在并进行下一步操作。 repository Cont

weixin_44131922的博客 1465
上一篇: 统一拦截异常 @RestControllerAdvice
下一篇: vue.config.js 里配置 Terser 压缩插件,主要作用是在生产环境中移除调试代码和压缩 JavaScript。
han_hanker
博客等级 码龄13年 35粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值