首页 > 其他分享 >【spring boot 常用注解】

【spring boot 常用注解】

时间:2025-01-14 15:00:33浏览次数:3  
标签:String spring boot class Bean Spring 注解 public

Spring Boot 中常用的注解,解释它们的作用、使用场景及示例,帮助深入理解 Spring Boot 的核心功能。

一、基本注解

1. @SpringBootApplication
  • 作用:这是一个组合注解,用来标记 Spring Boot 应用的启动类。它结合了 @Configuration@EnableAutoConfiguration@ComponentScan
  • 使用场景:通常在启动类上使用。
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
  • 解释
    • @Configuration:表示当前类是一个配置类,相当于 XML 配置文件。
    • @EnableAutoConfiguration:启用 Spring Boot 自动配置,Spring Boot 会自动根据类路径中的库来配置应用程序。
    • @ComponentScan:启用组件扫描,默认扫描当前包及子包中的组件。
2. @RestController
  • 作用:这是一个组合注解,表示该类是一个控制器,并且方法的返回值会直接作为 HTTP 响应体返回。相当于 @Controller@ResponseBody 的组合。
  • 使用场景:通常用于构建 RESTful API 时使用。
@RestController
public class MyController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}
  • 解释@RestController 自动处理返回的数据为 JSON 格式。
3. @RequestMapping / @GetMapping / @PostMapping
  • 作用@RequestMapping 是一个通用的请求映射注解,@GetMapping@PostMapping 等是其衍生注解,用于简化 HTTP 方法的指定。
@RequestMapping("/greeting")
public String greeting() {
    return "Hello, World!";
}

@GetMapping("/hello")
public String hello() {
    return "Hello, Spring Boot!";
}

@PostMapping("/create")
public String create() {
    return "Creating something!";
}
  • 解释
    • @RequestMapping:映射 HTTP 请求,可以指定方法、路径等。
    • @GetMapping:处理 GET 请求。
    • @PostMapping:处理 POST 请求。
    • @PutMapping:处理 PUT 请求。
    • @DeleteMapping:处理 DELETE 请求。
4. @Autowired
  • 作用:自动注入 Spring 容器中的 Bean。
  • 使用场景:当你需要自动装配依赖的 Bean 时,使用此注解。
@RestController
public class MyController {

    @Autowired
    private MyService myService;

    @GetMapping("/service")
    public String useService() {
        return myService.greet();
    }
}

@Service
public class MyService {
    public String greet() {
        return "Hello from Service!";
    }
}
  • 解释:Spring 会自动将 MyService 注入到 MyController 中。
5. @Value
  • 作用:用于注入配置文件中的属性值。
  • 使用场景:当需要从配置文件(如 application.propertiesapplication.yml)中读取值时使用。
@Component
public class MyComponent {
    @Value("${myapp.name}")
    private String appName;

    public String getAppName() {
        return appName;
    }
}
  • 解释@Value 注解可以读取配置文件中的属性值,myapp.name 会对应配置文件中的值。

二、常见的功能性注解

6. @Configuration
  • 作用:标记一个类为 Spring 配置类,通常用于配置 Bean 的创建。
  • 使用场景:定义 Java 配置类时使用。
@Configuration
public class MyConfig {
    @Bean
    public MyService myService() {
        return new MyService();
    }
}
  • 解释@Configuration 表示当前类是配置类,可以用 @Bean 来定义 Bean。
7. @Component / @Service / @Repository / @Controller
  • 作用:标记类为 Spring 容器管理的 Bean,分别表示普通组件、服务类、数据访问类、控制器类。
  • 使用场景:通常用于定义和识别应用中的类为 Bean。
@Component
public class MyComponent {
    // 业务逻辑
}

@Service
public class MyService {
    // 服务逻辑
}

@Repository
public class MyRepository {
    // 数据访问逻辑
}
  • 解释
    • @Component:标识一个普通组件类,Spring 会自动注册为 Bean。
    • @Service:通常用于标识服务类,@Service@Component 的派生注解。
    • @Repository:通常用于标识数据访问层(DAO)。
    • @Controller:用于标识控制器层,处理请求。
8. @Bean
  • 作用:标记一个方法将返回一个 Bean,Spring 会自动注册它到应用的上下文中。
  • 使用场景:在 @Configuration 注解的类中使用,用于定义 Bean。
@Configuration
public class MyConfig {
    @Bean
    public MyService myService() {
        return new MyService();
    }
}
  • 解释:方法返回的对象会被 Spring 容器管理。
9. @EnableAutoConfiguration
  • 作用:开启 Spring Boot 的自动配置功能,自动根据类路径中的配置来配置 Spring 应用。
  • 使用场景:通常由 @SpringBootApplication 自动包含。
@EnableAutoConfiguration
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
  • 解释:开启 Spring Boot 自动配置。

三、生命周期和事件相关注解

10. @PostConstruct@PreDestroy
  • 作用@PostConstruct 用于标记一个方法在 Bean 初始化之后执行,@PreDestroy 用于标记 Bean 销毁之前执行的清理方法。
  • 使用场景:当需要在 Bean 初始化或销毁时执行一些操作时使用。
@Component
public class MyBean {

    @PostConstruct
    public void init() {
        System.out.println("Bean initialized!");
    }

    @PreDestroy
    public void destroy() {
        System.out.println("Bean destroyed!");
    }
}
  • 解释@PostConstruct 方法会在 Bean 初始化后执行,@PreDestroy 会在 Bean 销毁前执行。
11. @EventListener
  • 作用:用于监听 Spring 应用上下文中的事件。
  • 使用场景:当需要监听和处理 Spring 事件时使用。
@Component
public class MyEventListener {

    @EventListener
    public void onApplicationEvent(ContextRefreshedEvent event) {
        System.out.println("Context refreshed!");
    }
}
  • 解释@EventListener 注解会让方法监听某个事件。

四、数据验证相关注解

12. @Valid@Validated
  • 作用@Valid 用于触发 Bean Validation,验证传入的请求体或参数是否合法。
  • 使用场景:常与 @RequestBody 一起使用,用于验证 HTTP 请求中的 JSON 数据。
@PostMapping("/create")
public String create(@Valid @RequestBody User user) {
    // 如果验证失败,Spring 会自动抛出异常
    return "User created!";
}
  • 解释@Valid 注解表示需要验证参数。
13. @NotEmpty / @NotNull / @Size
  • 作用:这些注解是 Java Bean Validation 的一部分,用于验证字段的值。
public class User {
    @NotNull
    private String name;

    @NotEmpty
    private String email;
    
    @Size(min = 6, max = 20)
    private String password;
}
  • 解释
    • @NotNull:字段值不能为 null
    • @NotEmpty:字段值不能为空(空字符串或 null)。
    • @Size:指定字段的长度范围。

这些是 Spring Boot 中常用的一些注解,它们在项目开发中非常常见,掌握这些注解有助于你更好地理解和使用 Spring Boot。

标签:String,spring,boot,class,Bean,Spring,注解,public
From: https://blog.csdn.net/qq_45973421/article/details/145139088

相关文章

  • 基于SpringBoot+Vue的大型超市数据处理系统的设计与实现(源码+lw+部署+讲解)
    文章目录1.前言2.详细视频演示3.具体实现截图4.技术可行性分析5.技术简介5.1后端框架SpringBoot5.2前端框架Vue5.3系统开发平台6.系统架构设计7.程序操作流程8.业务流程设计9.为什么选择我们9.1自己的公众号9.2海量实战案例10.代码参考11.数据库参考12.源码及文档获取......
  • SpringBoot社区旧物交易系统r8gnw(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,商品分类,商品信息开题报告内容一、研究背景随着社会的发展和人们生活水平的提高,人们对于环境保护和资源回收的意识不断增强。同时,随着城市化进程的加快,大......
  • Spring Boot 下的Swagger 3.0 与 Swagger 2.0 的详细对比
    先说结论:        Swgger3.0 与Swagger2.0 区别很大,Swagger3.0用了最新的注释实现更强大的功能,同时使得代码更优雅。    就个人而言,如果新项目推荐使用Swgger3.0,对于工具而言新的一定比旧的好;对接于旧项目原有Swagger2.0版本不变就不要变,因为它作为......
  • springboot662医院信管系统(论文+源码)_kaic
      摘要随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,医院信管系统就是信息时代变革中的产物之一。任何系统都要遵循系统设计的......
  • springboot661学生成绩管理系统(论文+源码)_kaic
     摘要随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,学生成绩管理系统就是信息时代变革中的产物之一。任何系统都要遵循系统设计......
  • springboot摄影跟拍预定管理系统(论文+源码)_kaic
     摘要首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设......
  • springboot664实习管理系统(论文+源码)_kaic
      摘要随着信息化时代的到来,管理系统都趋向于智能化、系统化,实习管理也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而实习管理系统能很好地解决这一问题,轻松应对实习管理平时的工作,既能提高人力物力财力,又能......
  • springboot使用阿里oss实现文件上传
    一、准备1.介绍阿里云是阿里巴巴集团旗下全球领先的云计算公司,也是国内最大的云服务提供商。云服务指的就是通过互联网对外提供的各种各样的服务,比如像:语音服务、短信服务、邮件服务、视频直播服务、文字识别服务、对象存储服务等等。当我们在项目开发时需要用到某个或某......
  • pbootcms数据库sqlite转mysql操作流程
    操作并不复杂,如果没有基础,操作之前一定要备份,避免数据损坏第一步:用SQLiteStudio打开db数据库,并导出sql文件第二步:使用专用工具,将导出的sql文件进行处理。第三步:将文件通过数据库管理工具导入第四步:修改数据库配置文件,根据自己IDE数据库信息调整就行。第五步:登录网站......
  • 基于Spring Boot实现的4S店管理系统
    一、系统背景与目的随着汽车市场的不断发展,4S店面临着日益激烈的竞争环境。为了提高运营效率、优化客户体验并增强市场竞争力,4S店需要一套高效、全面的管理系统来支持其日常运营。基于SpringBoot实现的4S店管理系统正是为了满足这一需求而开发的。二、技术架构该系统采......