SpringBoot常用注解

注解名称

含义或使用场景

使用位置

@ Component

被该类注解修饰的类,会被Spring管理起来. 即Spring的程序一启动, 就会被扫描到并实例化到容器中,等待被使用

类上

@ ComponentScan

此注解用于进行包扫描,指定要让Spring扫描哪个包下的组件

类上

@Configuration

用于表明被修饰的类是一个配置类

类上

此注解本质上就是一个被@Component修饰的组件)

@ConfigurationProperties

将配置文件中的一组配置对应到POJO或JavaBean上

类上

@ Value

将配置文件中的单个配置项获取到,赋值给成员属性上

成员属性上

@ Autowired

从Spring容器中获取到一个需要的类型的实例化对象赋值到成员属性上

成员属性上

默认使用类型为依据从容器中找到对应的实例化对象

@ Controller

标明是一个控制器类

类上

(此注解本质上就是一个被@Component修饰的组件)

@ Service

标明是一个服务器类(业务逻辑类)

类上

(此注解本质上就是一个被@Component修饰的组件)

@ Mapper

标明是一个数据处理类(数据层类)

接口上

@ RequesMapping

用来接收请求,标明请求的URL地址

类,方法上

此注解可以接收任何类型的请求

@ GetMapping

用来接收GET请求,标明请求的URL地址

方法上

@ PostMapping

用来接收POST请求,表明请求的URL地址

方法上

@ PutMapping

用来接收PUT请求,表明请求的URL地址

方法上

@ DeleteMapping

用来接收DELETE请求,标明请求的URL地址

方法上

@ RequestParam

  1. 当请求参数与形参名称对应不上时,使用此注解进行参数对应.
  2. 当请求参数是一个数组或列表类型的数据时,为了能够使用List类型的形参接收,需要加上此注解

方法形参上

@ PathVariable

接收URL路径中的变量,如/book/{id},可以将路径中的{id}参数进行接收

方法形参上

@ RequestBody

用来接收JSON类型的数据,解析为JAVA的实体类

方法形参上

@ ResponseBody

指将返回的方法值作为响应体响应给前端,当返回值是实体类,列表等类型时,直接就以JSON格式返回给前端了

类,方法上

@ DateTimeFormat

将提交过来的日期格式的字符串,直接转换为JAVA的日期类型

方法形参上

注意:需要了解提交过来的日期格式,使用pattern来标明:

@DateTimeFormat(pattern="yyyy-MM-dd")

@RestControllerAdvice

用来表明是一个异常处理类

类上

@ ExceptionHandler

用来表明是一个异常处理方法

方法上

### Spring Boot 常用注解及功能说明 Spring Boot 是一个快速开发框架,通过整合常用的第三方依赖、简化 XML 配置并采用注解形式,内置 HTTP 服务器(如 Jetty 和 Tomcat),使得开发者可以以 Java 应用程序的形式执行项目[^3]。以下是 Spring Boot常用注解及其功能说明: #### 1. `@SpringBootApplication` 这是一个复合注解,整合了以下三个注解的功能: - **`@SpringBootConfiguration`**:标识当前类为 Spring Boot 的配置类[^1]。 - **`@EnableAutoConfiguration`**:启用 Spring Boot 的自动配置机制,根据项目中的依赖和应用上下文自动配置 Spring 应用程序[^2]。 - **`@ComponentScan`**:自动扫描指定包及其子包中的 Spring 组件,并将它们注册为 Spring 容器中的 Bean[^2]。 示例代码如下: ```java package com.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MyStartApplication { public static void main(String[] args) { SpringApplication.run(MyStartApplication.class, args); } } ``` #### 2. `@Configuration` 用于标识一个类作为配置类,类似于 Spring XML 配置文件的作用。该注解通常与 `@Bean` 结合使用,定义方法返回的实例作为 Spring 容器中的 Bean[^3]。 示例代码如下: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); } } ``` #### 3. `@Component`, `@Service`, `@Repository`, `@Controller` 这些注解都属于组件扫描的一部分,用于将类标记为 Spring 容器中的 Bean: - **`@Component`**:通用注解,表示该类是一个组件。 - **`@Service`**:用于业务逻辑层的类[^3]。 - **`@Repository`**:用于数据访问层的类[^3]。 - **`@Controller`**:用于控制器层的类,通常与 Web 层结合使用。 示例代码如下: ```java import org.springframework.stereotype.Service; @Service public class MyService { public String getMessage() { return "Hello, Spring Boot!"; } } ``` #### 4. `@RestController` 这是一个组合注解,相当于 `@Controller` 和 `@ResponseBody` 的结合。它主要用于构建 RESTful Web 服务,直接返回 JSON 或 XML 格式的数据。 示例代码如下: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MyController { @GetMapping("/message") public String getMessage() { return "Hello, RESTful API!"; } } ``` #### 5. `@Autowired` 用于自动装配依赖。它可以作用于构造函数、字段、Setter 方法等,Spring 容器会根据类型或名称自动注入相应的 Bean。 示例代码如下: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class MyService { private final MyRepository myRepository; @Autowired public MyService(MyRepository myRepository) { this.myRepository = myRepository; } public String getData() { return myRepository.findData(); } } ``` #### 6. `@Value` 用于从配置文件中读取属性值,或者直接赋值给字段。可以通过 `${}` 占位符获取配置文件中的值。 示例代码如下: ```properties app.name=MyApp app.version=1.0.0 ``` ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class AppInfo { @Value("${app.name}") private String name; @Value("${app.version}") private String version; public String getAppInfo() { return name + " - " + version; } } ``` #### 7. `@Bean` 用于在 `@Configuration` 类中定义方法,将方法返回的对象注册为 Spring 容器中的 Bean[^3]。 示例代码如下: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); } } ``` #### 8. `@PostConstruct` 和 `@PreDestroy` 这两个注解分别用于定义 Bean 初始化后和销毁前的回调方法。`@PostConstruct` 标记的方法会在 Bean 创建完成后执行,而 `@PreDestroy` 标记的方法会在 Bean 销毁前执行[^4]。 示例代码如下: ```java import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.springframework.stereotype.Component; @Component public class MyComponent { @PostConstruct public void init() { System.out.println("Bean initialized."); } @PreDestroy public void destroy() { System.out.println("Bean destroyed."); } } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值