spring常用注解标签总结

news/2025/1/15 23:39:48/

1:@Component等

名称@Component/@Controller/@Service/@Repository
类型类注解
位置类定义上方
作用设置该类为spring管理的bean
属性value(默认):定义bean的id

说明:

  • @Component注解如果不起名称,会有一个默认值就是当前类名首字母小写,所以也可以按照名称获取

2:@Configuration

名称@Configuration
类型类注解
位置类定义上方
作用设置该类为spring配置类
属性value(默认):定义bean的id

说明 

   在配置类上添加包扫描注解@ComponentScan替换<context:component-scan base-package=""/>

  • @Configuration注解用于设定当前类为配置类

  • @ComponentScan注解用于设定扫描路径,此注解只能添加一次,多个数据请用数组格式

    @ComponentScan({com.fly.service","com.fly.dao"})
  • 读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象

    //加载配置文件初始化容器
    ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    //加载配置类初始化容器
    ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class); 

3:@ComponentScan

名称@ComponentScan
类型类注解
位置类定义上方
作用设置spring配置类扫描路径,用于加载使用注解格式定义的bean
属性value(默认):扫描路径,此路径可以逐层向下扫描

4:@Scope

名称@Scope
类型类注解
位置类定义上方
作用设置该类创建对象的作用范围 可用于设置创建出的bean是否为单例对象
属性value(默认):定义bean作用范围, ==默认值singleton(单例),可选值prototype(非单例)==

5:@PostConstruct

名称@PostConstruct
类型方法注解
位置方法上
作用设置该方法为初始化方法
属性

6:@PreDestroy

名称@PreDestroy
类型方法注解
位置方法上
作用设置该方法为销毁方法
属性

7:@Autowired

名称@Autowired
类型属性注解 或 方法注解(了解) 或 方法形参注解(了解)
位置属性定义上方 或 标准set方法上方 或 类set方法上方 或 方法形参前面
作用为引用类型属性设置值
属性required:true/false,定义该属性是否允许为null

注意:

  • @Autowired可以写在属性上,也可也写在setter方法上,最简单的处理方式是写在属性上并将setter方法删除掉

  • 为什么setter方法可以删除呢?

    • 自动装配基于反射设计创建对象并通过暴力反射为私有属性进行设值

    • 普通反射只能获取public修饰的内容

    • 暴力反射除了获取public修饰的内容还可以获取private修改的内容

    • 所以此处无需提供setter方法

8:@Qualifier

名称@Qualifier
类型属性注解 或 方法注解(了解)
位置属性定义上方 或 标准set方法上方 或 类set方法上方
作用为引用类型属性指定注入的beanId
属性value(默认):设置注入的beanId

当根据类型在容器中找到多个bean,注入参数的属性名又和容器中bean的名称不一致,这个时候就需要使用到@Qualifier来指定注入哪个名称的bean对象。  

@Qualifier注解后的值就是需要注入的bean的名称。

==注意:@Qualifier不能独立使用,必须和@Autowired一起使用==

9:@Value

名称@Value
类型属性注解 或 方法注解(了解)
位置属性定义上方 或 标准set方法上方 或 类set方法上方
作用为 基本数据类型 或 字符串类型 属性设置值
属性value(默认):要注入的属性值

10:@PropertySource

名称@PropertySource
类型类注解
位置类定义上方
作用加载properties文件中的属性值
属性value(默认):设置加载的properties文件对应的文件名或文件名组成的数组

注意:

  • 如果读取的properties配置文件有多个,可以使用@PropertySource的属性来指定多个

    @PropertySource({"jdbc.properties","xxx.properties"})
  • @PropertySource注解属性中不支持使用通配符*,运行会报错

    @PropertySource({"*.properties"})
  • @PropertySource注解属性中可以把classpath:加上,代表从当前项目的根路径找文件

    @PropertySource({"classpath:jdbc.properties"})

11:@Bean

名称@Bean
类型方法注解
位置方法定义上方
作用设置该方法的返回值作为spring管理的bean
属性value(默认):定义bean的id

12:@Import

名称@Import
类型类注解
位置类定义上方
作用导入配置类
属性value(默认):定义导入的配置类类名, 当配置类有多个时使用数组格式一次性导入多个配置类

注意:

  • 扫描注解可以移除

  • @Import参数需要的是一个数组,可以引入多个配置类。

  • @Import注解在配置类中只能写一次,下面的方式是==不允许的==

    @Configuration
    //@ComponentScan("com.fly.config")
    @Import(JdbcConfig.class)
    @Import(Xxx.class)
    public class SpringConfig {}

 13:总结

功能XML配置注解
定义Bean

bean标签

  • id属性
  • class属性

@Component

@Controller

@Service

@Repository

@ComponentScan

设置依赖注入

setter注入(set方法)  

  • 引用/简单(构造器注入(构造方法))
  • 引用/简单(自动装配)

@Autowired

@Qualifier

@Value

配置第三方bean

bean标签

静态工厂、实例工厂、FactoryBean

@Bean
作用范围scope属性@Scope
生命周期

标准接口

  • init-method
  • destroy-method

@PostConstructor

@PreDestroy

14:@RequestMapping

名称@RequestMapping
类型类注解或方法注解
位置SpringMVC控制器类或方法定义上方
作用设置当前控制器方法请求访问路径
相关属性value(默认),请求访问路径

15:@ResponseBody

名称@ResponseBody
类型类注解或方法注解
位置SpringMVC控制器类或方法定义上方
作用设置当前控制器方法响应内容为当前返回值,无需解析

16:@RequestParam

名称@RequestParam
类型形参注解
位置SpringMVC控制器方法形参定义前面
作用绑定请求参数与处理器方法形参间的关系
相关参数required:是否为必传参数 defaultValue:参数默认值

17:@RequestBody

名称@RequestBody
类型==形参注解==
位置SpringMVC控制器方法形参定义前面
作用将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次

18:@RequestBody与@RequestParam区别

  • 区别

    • @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】

    • @RequestBody用于接收json数据【application/json】

  • 应用

    • 后期开发中,发送json格式数据为主,@RequestBody应用较广

    • 如果发送非json格式数据,选用@RequestParam接收请求参数

19:@DateTimeFormat

名称@DateTimeFormat
类型==形参注解==
位置SpringMVC控制器方法形参前面
作用设定日期时间型数据格式
相关属性pattern:指定日期时间格式字符串

20:@ResponseBody

名称@ResponseBody
类型==方法\类注解==
位置SpringMVC控制器方法定义上方和控制类上
作用设置当前控制器返回值作为响应体, 写在类上,该类的所有方法都有该注解功能
相关属性pattern:指定日期时间格式字符串

说明:

  • 该注解可以写在类上或者方法上

  • 写在类上就是该类下的所有方法都有@ReponseBody功能

  • 当方法上有@ReponseBody注解后

    • 方法的返回值为字符串,会将其作为文本内容直接响应给前端

    • 方法的返回值为对象,会将对象转换成JSON响应给前端

此处又使用到了类型转换,内部还是通过Converter接口的实现类完成的,所以Converter除了前面所说的功能外,它还可以实现:

  • 对象转Json数据(POJO -> json)

  • 集合转Json数据(Collection -> json)

21:@PathVariable

名称@PathVariable
类型==形参注解==
位置SpringMVC控制器方法形参定义前面
作用绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应

22:@RestController

名称@RestController
类型==类注解==
位置基于SpringMVC的RESTful开发控制器类定义上方
作用设置当前控制器类为RESTful风格, 等同于@Controller与@ResponseBody两个注解组合功能

23:@GetMapping @PostMapping @PutMapping @DeleteMapping

名称@GetMapping @PostMapping @PutMapping @DeleteMapping
类型==方法注解==
位置基于SpringMVC的RESTful开发控制器方法定义上方
作用设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作, 例如@GetMapping对应GET请求
相关属性value(默认):请求访问路径

24:@RestControllerAdvice

名称@RestControllerAdvice
类型==类注解==
位置Rest风格开发的控制器增强类定义上方
作用为Rest风格开发的控制器类做增强

说明:此注解自带@ResponseBody注解与@Component注解,具备对应的功能

25:@ExceptionHandler

名称@ExceptionHandler
类型==方法注解==
位置专用于异常处理的控制器方法上方
作用设置指定异常的处理方案,功能等同于控制器方法, 出现异常后终止原始控制器执行,并转入当前方法执行

说明:此类方法可以根据处理的异常不同,制作多个方法分别处理对应的异常

 


http://www.ppmy.cn/news/1030551.html

相关文章

如何有效实施和推广电子文件管理系统?

随着科技的快速发展&#xff0c;传统的纸质文件管理方式逐渐被电子文件管理系统所取代。电子文件管理系统能够提高工作效率、节省空间和资源&#xff0c;并且有助于保护和维护文件的安全性。 1. 确定需求和目标 在实施电子文件管理系统之前&#xff0c;首先需要明确组织的需求…

【socket】recvfrom/sendto、recv/send、read/write问答

1.socket recvfrom能用于TCP吗&#xff1f; recvfrom()这个socket函数主要适用于UDP连接,在TCP连接上使用效果并不好。 这是因为recvfrom()的一些特性与TCP的工作方式不匹配: 1. recvfrom()可以获得数据来源地址和端口,但TCP作为连接导向的协议,这个信息在连接建立的时候就已经…

QT mouseTracking

在Qt中要捕捉鼠标移动事件需要重写MouseMoveEvent&#xff0c;但是MouseMoveEvent为了不太耗资源在默认状态下是要鼠标按下才能捕捉到。要想鼠标不按下时的移动也能捕捉到&#xff0c;需要setMouseTracking(true)。 如果鼠标跟踪失效&#xff08;默认&#xff09;&#xff0c;…

Idea中使用statement接口对象,显示mysql版本号,所有库和表名

使用statement 接口对象&#xff0c;进行以下操作&#xff1a; 显示数据库版本号显示所有库显示所有库中的table表 显示数据库版本号&#xff1a; public class StatementDemo {Testvoid showall(){try{Statement st conn.createStatement();ResultSet rs st.executeQuery(…

ssm+vue线上旅行信息管理系统源码和论文PPT

ssmvue线上旅行信息管理系统源码和论文PPT011 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 1、立论依据&#xff08;课题来源、选题依据和背景情况、课题研究目的、理论意义…

SpringBoot校验,DTO文件中常用的注解应用案例.

在观看本篇文章之前&#xff0c;可以先参考我之前写的一篇文章 “ Spring5&#xff0c;Service层对DTO文件进行数据格式校验. ” &#xff0c;这篇文章是介绍在 Service层 对DTO文件的校验。 以下方的 CompanyDTO 文件为例&#xff0c;讲解不同的注解使用场景&#xff0c;以及…

使用appuploader怎么安装测试​

目录 转载&#xff1a;使用appuploader怎么安装测试​ 一.安装测试​ 二.选择IPA​ 三.安装测试​ 转载&#xff1a;使用appuploader怎么安装测试​ 一.安装测试​ 首先我们来看安装测试这个模块&#xff0c;注意按照上面提示内容操作。 点击首页的测试设备管理 二.选择I…

生信豆芽菜-单基因KM曲线

网址&#xff1a;http://www.sxdyc.com/panCancerKMCurve 该工具主要用于查看单基因在泛癌组织中&#xff0c;高低表达的预后情况&#xff0c;这里可以选择合适的截断值&#xff0c;比如最佳截断&#xff0c;中位值&#xff0c;平均值&#xff0c;当然也可以自己输入&#xff0…