首页 > 其他分享 >springboot常用注解大全(超详细, 30个)

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

时间:2024-07-15 20:19:56浏览次数:9  
标签:springboot 示例 Spring 30 private class Bean public 大全

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<User> 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<String> addUser(@RequestBody User user) {
            // 处理用户添加逻辑
            return ResponseEntity.ok("User added successfully");
        }
    }
    

15. @PathVariable

  • 作用: 从URI路径中提取参数值,将其映射到方法的参数上。
  • 细节: 常用于RESTful服务中,允许动态地将URL中的部分作为方法参数使用。
  • 示例:
    @RestController
    public class MyRestController {
        @GetMapping("/users/{userId}")
        public ResponseEntity<User> getUserById(@PathVariable Long userId) {
            // 根据userId查询用户信息
            User user = userService.getUserById(userId);
            return ResponseEntity.ok(user);
        }
    }
    

16. @RequestParam

  • 作用: 用于从请求中获取参数的值。
  • 细节: 可以指定参数的默认值,是否必需等属性。适用于处理查询参数或表单数据。
  • 示例:
    @RestController
    public class MyRestController {
        @GetMapping("/users")
        public ResponseEntity<User> 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 知识点汇总, 待更

标签:springboot,示例,Spring,30,private,class,Bean,public,大全
From: https://www.cnblogs.com/xxctx/p/18303267

相关文章

  • 基于springboot+vue“智慧食堂”(毕设+实现+源码+数据库)
    摘要随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理“智慧食堂”系统的最新形式。本LW是以构建“智慧食堂”系统为目标,使用java技术制作,由管理员和用户两大部分组成。着重论述了系统设计......
  • P3304 [SDOI2013] 直径
    原题链接题解先随便找一条直径,然后标记这些边,然后看看直径上的点有没有不需要经过标记边的路径,使得其长度等于该点到直径端点的路径长度code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;structedge{llto,val;};vector<edge>G[200005];l......
  • SpringBoot实战:轻松实现接口数据脱敏
    引言在现代的互联网应用中,数据安全和隐私保护变得越来越重要。尤其是在接口返回数据时,如何有效地对敏感数据进行脱敏处理,是每个开发者都需要关注的问题。本文将通过一个简单的SpringBoot项目,介绍如何实现接口数据脱敏。一、接口数据脱敏概述1.1接口数据脱敏的定义接口数据脱......
  • 全球石英振荡器行业现状、重点企业分析及项目可行性研究报告(2024-2030)
    2024年7月15日环洋市场咨询机构出版了一份详细的、综合性的调研分析报告【全球石英振荡器行业总体规模、主要厂商及IPO上市调研报告,2024-2030】。本报告研究全球石英振荡器总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分析石英振荡器市场主要驱动......
  • 程序员的电脑都有些什么?什么是必备的?(软件+资料+链接大全)
    前言网上看一堆教程,安装了五花八门的软件,说的是不是你?面对满天飞的广告,卡成ppt的编程软件,使用着蹩脚的编程语法…现在,我将结合我的经验,从选择合适的开发工具到配置高效的工作环境,帮助大家避免走弯路,直接步入高效编程的快车道。插件推荐1.VSCode(VisualStudioCode)它......
  • 基于SpringBoot网络安全科普小程序
    摘要随着科技的快速的发展和网络信息的普及,信息化管理已经融入到了人们的日常生活中,各行各业都开始采用信息化管理系统,通过计算机信息化管理,首先可以减轻人们工作量,而且采用信息化管理数据信息更加的严谨,可以直接实现智能化管理和数据存储。同样这样的技术也可以直接应用到网......
  • 基于SpringBoot+MySQL+SSM+Vue.js的购物商城系统(附论文)
    获取见最下方名片获取见最下方名片获取见最下方名片演示视频基于SpringBoot+MySQL+SSM+Vue.js的购物商城系统(附论文)技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描......
  • 基于SpringBoot+MySQL+SSM+Vue.js的家政公司服务平台系统(附论文)
    获取见最下方名片获取见最下方名片获取见最下方名片演示视频基于SpringBoot+MySQL+SSM+Vue.js的家政公司服务平台系统(附论文)技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoo......
  • Springboot日志配置
    日志加载:org.springframework.boot.logging.AbstractLoggingSystem#initializeWithConventionsprivatevoidinitializeWithConventions(LoggingInitializationContextinitializationContext,LogFilelogFile){Stringconfig=getSelfInitializationConfig();......
  • Java毕业设计-基于springboot开发的医院后台管理系统设计与实现-毕业论文(附毕设源代码
    https://download.csdn.net/download/u014740628/88922529医院后台管理系统设计与实现应用技术概述在信息时代背景下,医院后台管理系统的开发成为提升医疗信息处理效率的关键。本文介绍的系统采用B/S架构,结合了MySQL数据库和Java语言进行实现,确保了系统的稳定性和数据的安......