spring-13

@Required 注解

     

@Required 注解用于标记必需的属性或参数,它确保被标记的属性或参数在使用之前被赋值,否则会抛出异常。

下面是一个使用 @Required 注解的完整代码示例:

import org.springframework.beans.factory.annotation.Required;public class Person {private String name;@Requiredpublic void setName(String name) {this.name = name;}public String getName() {return name;}
}

在上面的示例中,我们在 setName 方法上使用了 @Required 注解,表示 name 属性是必需的。如果在使用 Person 类的 setName 方法之前没有为 name 属性赋值,Spring 容器会抛出 BeanInitializationException 异常,提示 name 属性未被正确设置。

另外,需要确保在使用 @Required 注解时,所使用的 Spring 版本支持它。

@Autowired 注解

     

@Autowired注解用于自动装配Spring容器中的Bean对象。通过@Autowired注解,Spring会自动在容器中查找匹配的Bean并将其注入到需要的地方。

以下是一个完整的代码示例:

@Service
public class UserService {private UserDao userDao;@Autowiredpublic void setUserDao(UserDao userDao) {this.userDao = userDao;}// 使用userDao进行一些操作// ...
}@Repository
public class UserDao {// UserDao的具体实现// ...
}@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {// 配置Spring的自动扫描和装配// ...
}public class Main {public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);UserService userService = context.getBean(UserService.class);// 使用userService进行一些操作// ...}
}

在上述示例中,我们定义了一个UserService类和一个UserDao接口。在UserService类中,我们使用@Autowired注解将UserDao对象注入到userService中。通过自动装配,Spring会自动查找容器中类型为UserDao的Bean并将其注入到userService中。

AppConfig类中,我们使用@ComponentScan注解指定要扫描的基础包路径,这样Spring就会自动扫描这个包以及其子包中的所有类,并将标有@Service、@Repository等注解的类注册为Bean。

Main类中,我们通过创建AnnotationConfigApplicationContext对象并传入AppConfig.class来初始化Spring容器。然后我们可以使用context.getBean(UserService.class)来获取UserService的实例。通过自动装配,userService中的userDao已经被自动注入进来了。

@Qualifier 注解

     

@Qualifier注解用于解决依赖注入中的歧义问题。当一个接口有多个实现类时,使用@Qualifier注解可以明确指定要注入的实现类。

以下是一个完整的代码示例:

// 定义接口
public interface Animal {String getType();
}// 实现接口的两个类
@Service("dog")
public class Dog implements Animal {public String getType() {return "dog";}
}@Service("cat")
public class Cat implements Animal {public String getType() {return "cat";}
}// 使用@Qualifier注解指定要注入的实现类
public class App {@Autowired@Qualifier("dog")private Animal animal;public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();context.scan("com.example");context.refresh();App app = context.getBean(App.class);System.out.println(app.animal.getType());}
}

在上面的示例中,有一个Animal接口和它的两个实现类Dog和Cat。在App类中,使用@Autowired和@Qualifier("dog")注解来注入Animal的实现类。通过指定@Qualifier("dog"),我们明确地告诉Spring容器要注入的是Dog实例。在main方法中,我们创建了一个ApplicationContext,并通过getBean方法获取了App类的实例。调用app.animal.getType()方法后,输出结果为"dog"。如果我们将@Qualifier("dog")改为@Qualifier("cat"),输出结果将变为"cat"。这样,使用@Qualifier注解可以确保我们注入了我们想要的实现类。

总结 

  1. @Component:用于标记一个类为组件类,Spring会自动将其实例化并管理。

  2. @Controller:用于标记一个类为控制器类,通常用于处理HTTP请求。

  3. @Service:用于标记一个类为服务类,通常用于业务逻辑的处理。

  4. @Repository:用于标记一个类为数据访问类,通常用于处理数据库操作。

  5. @Autowired:用于标记一个字段、构造方法或方法参数,告诉Spring自动进行依赖注入。

  6. @Qualifier:用于指定需要注入的具体实现类,通常与@Autowired一起使用。

  7. @Value:用于注入配置属性值。

  8. @RequestMapping:用于映射HTTP请求的路径和方法。

  9. @ResponseBody:用于将方法返回值直接写入HTTP响应体。

  10. @PathVariable:用于获取URL路径中的参数。

  11. @RequestParam:用于获取HTTP请求参数。

  12. @Valid:用于开启方法参数的校验。

  13. @Transactional:用于声明事务,通常用于在方法上。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

cs224n作业4

NMT结构图:(具体结构图) LSTM基础知识 nmt_model.py: 参考文章:LSTM输出结构描述 #!/usr/bin/env python3 # -*- coding: utf-8 -*-""" CS224N 2020-21: Homework 4 nmt_model.py: NMT Model Penchen…

2024年导游资格证题库备考题库,高效备考!

1.台湾著名的太鲁阁公园的特色是()。 A.丘陵和溶洞 B.森林和瀑布 C.峡谷和断崖 D.彩林和彩池 答案:C 解析:台湾著名的太鲁阁公园的特色是峡谷和断崖。 2.下列位于台湾的景区中,素有"神秘的森林王国"之…

51单片机STC89C52RC——15.1 AD/DA(模数数模)

目的/效果 1 LCD1602 显示 可调电阻、光敏电阻、热敏电阻值(AD) 2 模拟信号控制LED明暗(DA) 一,STC单片机模块 二,AD/DA 2.1 AD/DA 介绍 AD(Analog to Digital):模拟…

金丝键合强度测试仪试验条件要求:键合拉脱/引线拉力/剪切力等

金丝键合强度测试仪是测量引线键合强度,评估键合强度分布或测定键合强度是否符合有关的订购文件的要求。键合强度试验机可应用于采用低温焊、热压焊、超声焊或有关技术键合的、具有内引线的器件封装内部的引线-芯片键合、引线-基板键合或内引线一封装引线键合&#…

Redis的zset的zrem命令可以做到O(1)吗?

事情是这样的,当我用zrem命令去移除value的时候,我知道他之前会做的几个步骤 1、查找这个value对应的score(通过zset中的dict)2、根据这个score查找到跳表中的节点3、删除这个节点 我就想了一下为什么dict为什么要保存score呢&a…

非堆成加密是公私钥使用

对称加密学习-CSDN博客 加密算法学习-CSDN博客 非对称加密算法使用一对密钥,包括一个公钥和一个私钥,它们是数学上相关联的,但公钥可以公开分享,而私钥必须保密。以下是使用非对称加密算法的一般步骤: 密钥生成&…

2024年江苏省研究生数学建模竞赛B题火箭烟幕弹运用策略优化论文和代码分析

经过不懈的努力, 2024年江苏省研究生数学建模竞赛B题火箭烟幕弹运用策略优化论文和代码已完成,代码为B题全部问题的代码,论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解(问题1模型的建立和求解、问题2模…

基于Java中的SSM框架实现计算机类考研院校推荐系统项目【项目源码+论文说明】

基于Java中的SSM框架实现计算机类考研院校推荐系统演示 摘要 在互联网时代人们获取信息的方式变得非常快捷,登录网站搜索就能快速查找到相关的信息,但是网络上面的信息数量非常庞大,有很多信息虽然和自己搜索的相关,但并不是自己…

猫狗图像分类-划分数据集

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️如遇文章付费,可先看…

网络-calico问题分析

项目场景: calico-node日志提示 Failed to auto-detect host MTU - no interfaces matched the MTU interface pattern. To use auto-MTU, set mtuifacePattern to match your hosts’s interfaes. 同时,cali开头网卡的mtu是1440大小 原因分析&#xff…

强技能 展风采 促提升——北京市大兴区餐饮行业职工技能竞赛精彩呈现

6月19日,由大兴区总工会、区商务局、青云店镇人民政府联合主办,区服务工会、区餐饮行业协会承办的“传承中国技艺,打造新一代餐饮工匠”2024年大兴区餐饮行业职工职业技能竞赛决赛在北京华联创新学习中心隆重开幕。区总工会副主席郝泽宏&…

Alibaba Cloud Toolkit前端使用proxy代理配置

1、vscode 先安装插件 Alibaba Cloud Toolkit 2、前端代码: /personnel: {// target: http://xxx.xx.xxx.xx:9100, // 测试环境// target: http://xxx.xx.xxx.xx:9200, // 线上环境target: http://127.0.0.1:18002, // toolkit 代理changeOrigin: true,},3、打开插…

【Pyhton】读取寄存器数据到MySQL数据库

目录 步骤 modsim32软件配置 Navicat for MySQL 代码实现 步骤 安装必要的库:确保安装了pymodbus和pymysql。 配置Modbus连接:设置Modbus从站的IP地址、端口(对于TCP)或串行通信参数(对于RTU)。 连接M…

第三方商城对接重构(HF202407)

文章目录 项目背景一、模块范围二、问题方案1. 商品模块整体来说这块对接的不是太顺利,梳理了几条大概的思路:2. 订单模块3. 售后4. 发票5. 结算单经验总结项目背景 作为供应商入围第三方商城成功,然后运营了一段时间,第三方通知要重构, 需要重新对接打通接口完成系统对接…

gcc/g++的四步编译

目录 前言1.预处理(进行宏替换)2.编译(生成汇编)3.汇编(生成二进制文件)4. 链接 (生成可执行文件)a. 动态库 && 动态链接b. 静态库 && 静态链接c. 验证d. 动静态链接…

SCI论文发表:构建清晰论文框架的10个原则 (附思维导图,建议收藏)

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 论文框架是什么?对我们完成一篇论文有哪些作用? 之前娜姐分享过一篇深圳湾实验室周耀旗教授关于论文写作的文章,他提出的第一个重要原则就…

VScode将界面语言设置为中文

1. 点击左侧的扩展图标,打开侧边栏“EXTENSIONS”面板。 2. 在搜索框中输入“Chinese”,查找出“中文简体”插件,点击“install”按钮。 3. 等待插件安装完成,点击右下角“restart”按钮,从而重新启动Vscode。

Linux多进程和多线程(七)进程间通信-信号量

进程间通信之信号量 资源竞争 多个进程竞争同一资源时,会发生资源竞争。 资源竞争会导致进程的执行出现不可预测的结果。 临界资源 不允许同时有多个进程访问的资源, 包括硬件资源 (CPU、内存、存储器以及其他外 围设备) 与软件资源(共享代码段、共享数据结构) …

【HTML入门】第二课 - head标签下的常见标签们

目录 1 本节概要 2 head下的常见标签 2.1 网页编码设置 2.2 网页的标题 2.3 样式标签 3 head标签的内容不会显示到网页上 4 查看网页源代码 1 本节概要 上一节,我们说了HTML网页最基本的框架标签,说到标签分为head头部和body身体部分。这一小节呢…

baomidou多数据源切换注解@DS没有效果

baomidou多数据源切换注解DS没有效果 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.1.1</version> </dependency> ##原因 方法上有Transaction…