Spring中的@Autowired与@Resource区别

Spring 中的注解有哪些?它们的具体作用是什么?

Spring 中的注解有很多,以下是一些常用的注解和它们的作用:

1、@Autowired

@Autowired 注解用于自动装配,将匹配类型的 bean 自动连接到指定的字段、方法或构造函数上,从而简化了依赖注入的过程。

@Autowired和@Resource都是Spring中用于依赖注入的注解,它们的作用都是将一个bean注入到另一个bean中,

但两者有以下区别:

1.1、注入方式不同:

@Autowired是按照类型来自动装配的,它通过byType的方式实现自动装配,如果容器中有多个类型匹配的bean,那么会抛出异常。

@Resource默认按照名称来装配,它通过byName的方式实现自动装配,如果指定了name属性,那么会按照名称装配,如果没有指定name属性,那么会按照类型装配。

1.2、来源不同:

@Autowired是Spring提供的注解,而@Resource是JSR-250规范中定义的注解,因此@Autowired是Spring特有的注解,而@Resource是JavaEE的注解,它们的使用范围不同。

1.3、注入方式不同:

@Autowired只能注入其他bean类型的属性。

@Resource既可以注入其他bean类型的属性,也可以注入普通类型的属性。

1.4、属性不同:

@Autowired没有额外的属性。

@Resource有两个重要的属性,分别是name和type,其中name属性用于指定bean的名称,type属性用于指定bean的类型。

总的来说,@Autowired和@Resource都是用于实现依赖注入的注解,但使用方式和实现方式略有不同,开发者可以根据需要选择使用哪个注解。

2、@Qualifier

@Qualifier 注解与 @Autowired 注解配合使用,用于指定注入的 bean 的名称。当有多个同类型的 bean 时,可以使用该注解指定要注入的 bean 的名称。

3、@Component

@Component 注解用于将类标记为一个组件,告诉 Spring 要将其放入容器中管理。它是一个通用的注解,可以用于任何类,但通常用于服务层、数据访问层和控制器等组件类中。

4、@Controller

@Controller 注解用于标记一个类作为 Spring MVC 中的控制器,用于处理请求和响应。它通常与 @RequestMapping 注解一起使用,将请求映射到控制器处理方法。

5、@RequestMapping

@RequestMapping 注解用于将请求映射到控制器处理方法。它可以用于类级别和方法级别,用于指定请求的 URL 地址、请求方法、请求参数、请求头等信息。

6、@Service

@Service 注解用于标记一个类作为服务层的组件,通常用于封装业务逻辑的方法。

7、@Repository

@Repository 注解用于标记一个类作为数据访问层的组件,通常用于封装数据访问的方法。

8、@Configuration

@Configuration 注解用于标记一个类为 Spring 的配置类,用于定义 bean。它通常与 @Bean 注解一起使用,将方法返回的对象注册为一个 bean。

9、@Bean

@Bean 注解用于将方法返回的对象注册为一个 bean。它通常与 @Configuration 注解一起使用,用于定义 bean。

10、@Value

@Value 注解用于将属性值注入到一个 bean 中。它可以用于类级别和字段级别,用于指定属性的值。

11、@Scope

@Scope 注解用于指定 bean 的作用域。它可以用于类级别和方法级别,用于指定 bean 的生命周期、作用域和代理方式等信息。

12、@Transactional

@Transactional 注解用于标记一个方法或类为事务处理方法。它通常用于封装数据库操作的方法,保证数据库操作的原子性、一致性和隔离性。

这些注解可以帮助 Spring 容器自动完成依赖注入、bean 的创建和管理、请求的处理等工作,从而简化了应用程序的开发。

原文链接:https://blog.csdn.net/qq_43012298/article/details/129466845

相关推荐
救救孩子把2 分钟前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务
猿究院--Cu-Sn合金4 分钟前
Spring Boot + DeepSeek 求职 Agent 实践:工具注册、多轮调用与简历 JD 对比
数据库·人工智能·spring boot·后端·deepseek
程序员cxuan6 分钟前
别学 subagent 了,很可能要凉了。
后端·agent·ai编程
小咕聊编程12 分钟前
基于Django的个人摄影博客网站设计与开发
后端·python·django
silvamux_19 分钟前
微头条爆款体平台适配实测:把交付要求变成可计算的指标
java·线性代数·算法·决策树·矩阵
论文复现现场19 分钟前
DeepSeek V4.1 Flash 和 V4 Pro 有什么区别?API 价格、性能与迁移建议
java·服务器·人工智能·python·大模型api·deepseek·deepseek v4.1
郭小李1 小时前
转发与重定向
java·服务器·数据库
你看我名字1 小时前
数眼智能 Search + Reader 实战:联网问答怎样避免“搜到了,却引用错了”
android·java·开发语言
未秃头的程序猿1 小时前
@ConditionalOnMissingBean 把我配好的 RabbitMQ 手动 ack 吃掉了
后端·rabbitmq
回家路上绕了弯1 小时前
当 AI 成为队友:团队协作使用 AI 的实践与思考
后端