Spring框架常用注解(Annotation)收录

Spring框架常用注解(Annotation)收录

Spring框架广泛使用注解来配置和管理Bean,简化了XML配置,提高了开发效率。以下是一些Spring框架中常用的注解:

1. @Component, @Service, @Repository, @Controller

  • 用途:这些是组件扫描注解,用于标记Spring应该管理的类。它们本质上都是@Component的特殊化,分别对应于业务服务层、数据访问层、持久层和表现层的类。

    @Service
    public class MyService {// 业务逻辑
    }
    

2. @Autowired

  • 用途:自动装配,Spring会自动寻求满足Bean的依赖,通常是通过类型匹配来注入依赖对象。可以用于字段、构造器、setter方法上

    @Service
    public class MyService {@Autowiredprivate MyRepository repository;// ...
    }
    

@Autowired与@Resource异同:

  1. @Autowired与@Resource都可以用来装配bean。都可以写在字段上,或写在setter方法上。

  2. @Autowired默认按类型装配(属于spring规范),默认情况下必须要求依赖对象必须存在,如果

要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我

们想使用名称装配可以结合@Qualifier注解进行使用

  1. @Resource(属于J2EE复返),默认按照名称进行装配,名称可以通过name属性进行指定。如果

没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在

setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是

需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

它们的作用相同都是用注解方式注入对象,但执行顺序不同。@Autowired先byType,@Resource先byName。

3. @Qualifier

  • 用途:当有多个相同类型的Bean时,与@Autowired一起使用,指定应该注入哪个具体的Bean。

    @Autowired
    @Qualifier("mySpecialRepository")
    private MyRepository specialRepository;
    

4. @Value

  • 用途:用于读取属性文件中的值并注入到Bean中,支持SpEL表达式。

  • 示例

    @Value("${app.name}")
    private String appName;
    

5. @Configuration

  • 用途:标记一个类作为配置类,可以包含@Bean注解的方法来声明一个或多个Bean。

  • 示例

    @Configuration
    public class AppConfig {@Beanpublic MyService myService() {return new MyService();}
    }
    

6. @Bean

  • 用途:在@Configuration类中声明一个Bean。告诉Spring如何创建一个特定的bean实例。
@Configuration
public class AppConfig {@Beanpublic MyService myService() {return new MyService();}
}

7. @RequestMapping, @GetMapping, @PostMapping, etc.

  • 用途:用于处理HTTP请求映射。@RequestMapping是一个通用注解,可以用于处理任意类型的HTTP请求,而@GetMapping, @PostMapping等是它的特化,分别对应GET、POST等HTTP方法。

    @RestController
    @RequestMapping("/api/users")
    public class UserController {@GetMapping("/{id}")public User getUserById(@PathVariable Long id) {// 处理GET请求}@PostMappingpublic ResponseEntity<User> createUser(@RequestBody User user) {// 处理POST请求}
    }
    

8. @Transactional

  • 用途:用于指定一个方法或类的事务边界。当方法被调用时,Spring会自动开启和提交或回滚事务。

    @Service
    @Transactional
    public class MyService {public void updateAndSave(User user) {// 数据操作}
    }
    

这些注解极大地简化了Spring应用的开发和配置,使得开发者能够更加专注于业务逻辑的实现。

了解更多知识请戳下:

@Author:懒羊羊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

`kubectl get pod -oyaml` 和 `kubectl describe pod`

kubectl get pod -oyaml 和 kubectl describe pod 这两个命令都用于获取 Pod 的信息&#xff0c;但它们提供信息的方式和内容有所不同&#xff1a; kubectl get pod -oyaml&#xff1a; 这个命令列出指定 Pod 的信息&#xff0c;输出格式为 YAML。输出内容是结构化的&#xff0…

精度丢失引起的支付失败问题

问题描述 在提交订单时候&#xff0c;输入充值金额和优惠码&#xff0c;后台会返回具体的订单信息&#xff0c;如下图&#xff0c;支付金额应该是1 * (1 - 0.09) 0.91&#xff08;这个是理想状态&#xff09;&#xff0c;但是表单显示的是0.90999997&#xff0c; 然后点击确…

架构师篇-1、总体架构设计

业务架构哲学本质 定位&#xff1a;赋予业务架构设计能力&#xff0c;具备业务架构设计思维模型&#xff0c;掌握业务架构哲学本质&#xff0c;形成以不变应万变的业务架构设计能力。 架构师所需要的能力&#xff1a; 带领业务成功通过框架思维赋能业务架构师知识体系构建掌…

PostgreSQL源码分析——pg_archivecleanup

pg_archivecleanup用于清理PostgreSQL WAL归档文件。指定归档目录&#xff0c;指定一个最老的日志段文件&#xff08;在此之前的WAL日志都删掉&#xff09;&#xff0c; 用法如下&#xff1a; postgresslpc:~$ pg_archivecleanup --help pg_archivecleanup removes older WAL …

HDU——2090.算菜价、2091.空心三角形、2093.考试排名

2090.算菜价 题目描述 Problem - 2090 Problem Description 妈妈每天都要出去买菜&#xff0c;但是回来后&#xff0c;兜里的钱也懒得数一数&#xff0c;到底花了多少钱真是一笔糊涂帐。现在好了&#xff0c;作为好儿子&#xff08;女儿&#xff09;的你可以给她用程序算一…

理解前端Cookie中的SameSite属性

SameSite属性是一个相对较新的Cookie属性&#xff0c;它可以帮助防止跨站请求伪造&#xff08;CSRF&#xff09;攻击。SameSite属性用于声明Cookie是否可以在跨站点情况下发送。 SameSite属性有三个可选值&#xff1a;Strict&#xff0c;Lax和None。 SameSiteStrict&#xff1…

Idea Git 解决Filename too long的问题

问题描述&#xff1a; 从远程厂库拉取代码以后&#xff0c;可能是被人的文件名字太长了&#xff0c;本地显示文件已经被删除。 原因&#xff1a; Windows系统下&#xff0c;在Git使用过程中&#xff0c;出现“filename too long”错误提示。直译成中文的意思就是&#xff1a;”…

Adobe XD是否收费?试试这几款超值的免费软件吧!

Adobe XD是一站式的 UX/UI 设计平台&#xff0c;设计师可以使用Adobe XD完成移动应用app界面设计、网页设计、原型设计等。Adobe XD也是一款结合原型和设计&#xff0c;提供工业性能的跨平台设计产品。而Adobebe。 XD跨平台的特点得到了很好的弥补 Sketch 没有 Windows 版本的缺…

网安人必备!开源网络安全工具TOP 10(附下载地址)

工欲善其事&#xff0c;必先利其器。对于广大的网络安全从业者&#xff0c;以及未来想要从事网络安全的人来说&#xff0c;选择并善用合适的网络安全工具&#xff0c;能有效提升工作效率。 开源网络安全工具之所以能够在众多安全解决方案中脱颖而出&#xff0c;不仅是因为它们…

C++ 68 之 类模版作函数的参数

#include <iostream> // #include <cstring> #include <string> using namespace std;template<class T1, class T2> // 可以设置默认的类型值&#xff0c;后面在使用的时候&#xff0c;就不用再指定类型了 class Students08{ public:T1 m_name;T2 m_a…

SysTools MailXaminer: 电子邮件取证调查中的链接分析和时间线分析

天津鸿萌科贸发展有限公司是 SysTools 系列软件的授权代理商。 SysTools MailXaminer 电子邮件取证软件提供全面强大的解决方案&#xff0c;通过简化的操作&#xff0c;从电子邮件客户端、网络邮箱服务器、磁盘镜像、Skype 通讯工具中解密并搜索证据。软件对调查工作的每一阶段…

c++参考std::string自己设计类hstring

目录 一、前言 二、设计需求 三、设计思想 1.功能一 1.功能二 四、设计过程 1.类hstring搭建 2. 实现有参构造函数 3. 实现副本构造函数 4.完整代码 五、结束语 一、前言 在c中有很多的库&#xff0c;但是在有些时候呢&#xff0c;我们一定要学会自己去设计库&#…

PHP框架之symfony框架

Symfony框架详解 Symfony是一个由SensioLabs公司开发并维护的PHP框架&#xff0c;旨在提高开发效率、代码复用性和应用的可维护性。自2005年发布以来&#xff0c;Symfony已成为众多开发者的首选框架之一&#xff0c;尤其在构建复杂的Web应用程序方面表现出色。 主要特点 高效…

文件扫描工具都有哪些?职场大佬都在用的文本提取工具大盘点~

回想起刚毕业初入职场那阵子&#xff0c;领导让帮忙把纸质文件扫描提取为文本时&#xff0c;还只会傻乎乎地一点点操作&#xff0c;属实是费劲得很&#xff01; 好在后面受朋友安利&#xff0c;找到了4个能够快速实现文件扫描文字提取的方法&#xff0c;这才让我的办公效率蹭蹭…

关于自学\跳槽\转行做网络安全行业的一些建议

很好&#xff0c;如果你是被题目吸引过来的&#xff0c;那请看完再走&#xff0c;还是有的~ 为什么写这篇文章 如何自学入行&#xff1f;如何小白跳槽&#xff0c;年纪大了如何转行等类似问题 &#xff0c;发现很多人都有这样的困惑。下面的文字其实是我以前的一个回答&#…

当site-packages的类型为.so,Python解释器不会提示或列出该模块可用的函数和类的原因及解决方法

原因&#xff1a; 当你在Python中导入一个.so文件&#xff08;或者任何扩展模块&#xff09;时&#xff0c;如果它不提供任何Python级别的接口或文档&#xff0c;Python解释器通常不会提示或列出可用的函数和类。这是因为扩展模块可能是用C语言编写的&#xff0c;并且它们通常…

MyBatis-For input string: “oqm“ 异常

前言 具体的异常信息如下&#xff1a; Error attempting to get column open_id from result set. Cause: java.lang.NumberFormatException: For input string: "oqmJX5ZPU1KOv-YDt30GNAN-Zefk" 乍一看下其实就是无法把open_id字符串类型转为数字类型进行赋值&…

Elasticsearch RestclientApi基础用法

Elasticsearch RestclientApi基础用法 索引 初始化 添加依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency>创建链接 package com.hmall.i…

synchronized原理

当线程释放锁&#xff0c;JMM会把线程对应的本地的内存中的共享变量刷新到内存中 当线程获取锁&#xff0c;JMM会帮其他线程中对应的本地的内存中的共享变量设置未无效&#xff0c;从而监视器保护的临界区的代码必须从内存中读取共享变量。&#xff08;临界区为锁之间的代码&am…

3D模型可视化引擎HOOPS Communicator与Visualize的统一化文件加载解决方案

在当今数字化时代&#xff0c;3D可视化技术已成为工程设计、建筑规划和游戏开发等多个领域的核心技术。Tech Soft 3D公司凭借其创新的HOOPS Communicator和HOOPS Visualize两款开发包&#xff0c;分别针对Web端和桌面端提供了强大的3D可视化解决方案。然而&#xff0c;由于两者…