springboot常用注解大全(超详细, 30个)

springboot常用注解大全(超详细, 30个)

Spring Boot注解主要用于简化配置、自动装配组件和实现声明式服务。以下是详细的介绍:

1、Springboot注解

核心注解

1. @SpringBootApplication

作用: 标注一个主程序类,表明这是一个Spring Boot应用程序的入口。

功能: 这是一个复合注解,组合了@Configuration、@EnableAutoConfiguration和@ComponentScan。

@Configuration: 标识一个类作为配置类,类似于Spring XML配置文件。

@EnableAutoConfiguration: 启用Spring Boot的自动配置机制,根据项目中的依赖和应用上下文自动配置Spring应用程序。

@ComponentScan: 自动扫描指定包及其子包中的Spring组件。

示例:@SpringBootApplication

public class MyApplication {

public static void main(String[] args) {

SpringApplication.run(MyApplication.class, args);

}

}

自动配置注解

2. @EnableAutoConfiguration

作用: 启用Spring Boot的自动配置机制,根据项目中的依赖和应用上下文自动配置Spring应用程序。

细节: 它会尝试根据添加的依赖和项目中的配置自动配置Spring Bean。例如,如果项目中有HSQLDB的依赖,Spring Boot会自动配置一个内存数据库。

示例:@EnableAutoConfiguration

public class MyApplication {

public static void main(String[] args) {

SpringApplication.run(MyApplication.class, args);

}

}

3. @Configuration

作用: 标注一个类作为配置类,相当于一个Spring XML配置文件。

细节: 配置类可以包含一个或多个@Bean注解的方法,这些方法会返回要注册到Spring应用上下文中的Bean。

示例:@Configuration

public class AppConfig {

@Bean

public MyService myService() {

return new MyServiceImpl();

}

}

组件扫描和注入注解

4. @ComponentScan

作用: 指定要扫描的包,以便发现和注册Spring组件。

细节: 默认情况下,@ComponentScan会扫描主应用类所在的包及其子包。

示例:@ComponentScan(basePackages = "com.example")

public class MyApplication {

}

5. @Component

作用: 将一个类标识为Spring组件(Bean),可以被Spring容器自动检测和注册。

细节: @Component是一个通用的注解,可以用来标注任何Spring管理的Bean。

示例:@Component

public class MyComponent {

}

6. @Service

作用: 标识服务层组件,实际上是@Component的一个特化,用于表示业务逻辑服务。

细节: 用于标识服务层的类,这些类通常包含业务逻辑。

示例:@Service

public class MyService {

}

7. @Repository

作用: 标识持久层组件,实际上是@Component的一个特化,用于表示数据访问组件。

数据访问组件(Data Access Component)通常是指在软件系统中负责数据访问和持久化的部分或模块。在典型的企业应用程序中,数据访问组件通常涉及与数据库交互、执行数据操作(如增删改查)、数据转换和持久化等任务。

示例:@Repository

public class MyRepository {

}

8. @Controller

作用: 标识控制层组件,实际上是@Component的一个特化,用于表示Web控制器。

细节: 用于标识Spring MVC控制器,处理Web请求并返回视图。

示例:@Controller

public class MyController {

}

9. @RestController

作用: 标识一个RESTful Web服务的控制器,实际上是@Controller和@ResponseBody的结合。

细节: 返回的对象会自动序列化为JSON或XML,并写入HTTP响应体中。

示例:@RestController

public class MyRestController {

}

数据绑定和验证注解

10. @RequestMapping

作用: 映射HTTP请求到处理方法上(GET、POST、PUT、DELETE等)。

示例:@Controller

public class MyController {

@RequestMapping("/hello")

public String sayHello() {

return "hello";

}

}

11. @GetMapping

作用: 映射HTTP GET请求到处理方法上。

示例:@RestController

public class MyRestController {

@GetMapping("/users")

public List getUsers() {

return userService.getAllUsers();

}

}

12. @PostMapping

作用: 映射HTTP POST请求到处理方法上。

示例:@RestController

public class MyRestController {

@PostMapping("/users")

public User

13. @ResponseBody

作用: 将方法的返回值转换为指定格式(如JSON、XML)作为HTTP响应的内容返回给客户端。

细节: 常用于RESTful服务中,标识方法返回的对象不是视图名称,而是直接写入HTTP响应体中的数据。

示例:@RestController

public class MyRestController {

@GetMapping("/hello")

@ResponseBody

public String sayHello() {

return "Hello, World!";

}

}

14. @RequestBody

作用: 将HTTP请求体的内容(如JSON、XML等)映射到一个Java对象。

细节: 通常用于POST请求中,将客户端发送的数据绑定到方法的参数上。

示例:@RestController

public class MyRestController {

@PostMapping("/users")

public ResponseEntity addUser(@RequestBody User user) {

// 处理用户添加逻辑

return ResponseEntity.ok("User added successfully");

}

}

15. @PathVariable

作用: 从URI路径中提取参数值,将其映射到方法的参数上。

细节: 常用于RESTful服务中,允许动态地将URL中的部分作为方法参数使用。

示例:@RestController

public class MyRestController {

@GetMapping("/users/{userId}")

public ResponseEntity getUserById(@PathVariable Long userId) {

// 根据userId查询用户信息

User user = userService.getUserById(userId);

return ResponseEntity.ok(user);

}

}

16. @RequestParam

作用: 用于从请求中获取参数的值。

细节: 可以指定参数的默认值,是否必需等属性。适用于处理查询参数或表单数据。

示例:@RestController

public class MyRestController {

@GetMapping("/users")

public ResponseEntity getUserByName(@RequestParam String username) {

// 根据用户名查询用户信息

User user = userService.getUserByUsername(username);

return ResponseEntity.ok(user);

}

}

这些注解是Spring MVC和Spring Boot中常用的数据绑定和处理注解,帮助开发者更方便地处理HTTP请求和响应,实现灵活的接口设计和数据交互。

数据访问注解

17. @Entity

作用: 标识一个JPA实体。

细节: 用于定义一个与数据库表映射的持久化类。

示例:@Entity

public class User {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

private String name;

}

18. @Table

作用: 指定实体对应的数据库表名称。

细节: 如果类名与数据库表名不同,可以使用@Table注解进行指定。

示例:@Entity

@Table(name = "users")

public class User {

// fields and methods

}

其他常用注解

19. @Value

作用: 用于将外部属性值注入到Spring Bean中。

细节: 可以用于注入属性文件中的值、系统环境变量、系统属性等。

示例:@Value("${my.property}")

private String myProperty;

20. @Autowired

作用: 自动装配Bean,进行依赖注入。

细节: Spring会自动满足Bean的依赖。可以用于字段、构造函数和方法上。

示例:@Service

public class MyService {

@Autowired

private MyRepository myRepository;

}

21. @Bean

作用: 用于定义一个Spring Bean。

细节: 通常用于配置类中,定义的方法返回的对象会被注册为Spring容器中的Bean。

示例:@Configuration

public class AppConfig {

@Bean

public MyService myService() {

return new MyServiceImpl();

}

}

22. @Conditional

作用: 根据特定条件创建Bean。

细节: 可以与自定义条件类一起使用,只有在条件满足时,Spring才会创建该Bean。

示例:@Bean

@Conditional(MyCondition.class)

public MyService myService() {

return new MyServiceImpl();

}

23. @Primary

作用: 指定当一个接口有多个实现时,优先选择的Bean。

示例:@Service

@Primary

public class PrimaryService implements MyService {

}

24. @Qualifier

作用: 配合@Autowired使用,用于指定注入的Bean的名称或ID。

示例:@Service

public class MyService {

@Autowired

@Qualifier("myRepositoryImpl")

private MyRepository myRepository;

}

25. @Lazy

作用: 延迟初始化Bean,只有在首次使用时才创建Bean。

示例:@Service

@Lazy

public class LazyService {

}

26. @Scope

作用: 指定Bean的作用域(单例、多例、请求、会话等)。

示例:@Service

@Scope("prototype")

public class PrototypeService {

}

其他注解

简化POJO开发的注解

这三个注解通常与Lombok(一种Java库)结合使用,用于简化POJO(Plain Old Java Object)的开发。

1. @Data

作用: @Data 是一个复合注解,集成了 @ToString、@EqualsAndHashCode、@Getter、@Setter 和 @RequiredArgsConstructor 的功能。

功能:

@ToString: 自动生成 toString() 方法,包含所有字段。

@EqualsAndHashCode: 自动生成 equals() 和 hashCode() 方法,基于所有非静态和非瞬态字段。

@Getter 和 @Setter: 自动生成字段的 getter 和 setter 方法。

@RequiredArgsConstructor: 自动生成包含必需字段的构造方法。

示例:

import lombok.Data;

@Data

public class User {

private Long id;

private String username;

private String email;

}

编译时,Lombok会自动生成如下代码:

public class User {

private Long id;

private String username;

private String email;

// 自动生成的 toString(), equals(), hashCode(), getter 和 setter 方法

// 以及包含所有字段的构造方法

}

2. @AllArgsConstructor

作用: 自动生成包含所有字段的构造方法。

示例:

import lombok.AllArgsConstructor;

import lombok.Data;

@Data

@AllArgsConstructor

public class User {

private Long id;

private String username;

private String email;

}

编译时,Lombok会自动生成如下构造方法:

public User(Long id, String username, String email) {

this.id = id;

this.username = username;

this.email = email;

}

3. @NoArgsConstructor

作用: 自动生成无参构造方法。

示例:

import lombok.Data;

import lombok.NoArgsConstructor;

@Data

@NoArgsConstructor

public class User {

private Long id;

private String username;

private String email;

}

编译时,Lombok会自动生成如下无参构造方法:

public User() {

// 空构造方法

}

文章到这里就这束了!~

其他文章地址:

快速入门,springboot知识点汇总

springboot常用注解大全(超详细, 30个)

springboot websocket知识点汇总

spring cloud 知识点汇总, 待更

更多创意作品