首页 > 其他分享 >常用 Spring Boot 注解详解

常用 Spring Boot 注解详解

时间:2024-10-24 16:45:57浏览次数:3  
标签:示例 Spring Boot MyService bean 详解 注解 public

Spring Boot 是一个基于 Spring 框架的工具集,旨在快速开发独立、生产级别的基于 Spring 的应用程序。它通过大量注解简化了配置和开发过程,下面将详细介绍一些常用的 Spring Boot 注解,包括它们的作用、实现原理、使用示例和注意事项。

1. @SpringBootApplication

作用

这是一个组合注解,包含了 @SpringBootConfiguration@EnableAutoConfiguration@ComponentScan。用于标识主配置类,并启用自动配置和组件扫描。

实现

  • @SpringBootConfiguration:标识这是一个配置类,类似于 @Configuration
  • @EnableAutoConfiguration:启用 Spring Boot 的自动配置机制,根据类路径、属性文件等自动配置 Spring 应用。
  • @ComponentScan:启用组件扫描,默认扫描同包及子包下的组件。

使用示例

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

注意事项

  • 通常在应用的入口类上使用,确保包结构合理以支持组件扫描。

2. @Configuration

作用

标识一个类是配置类,用于定义 @Bean

实现

@Configuration 注解的类会被 Spring 容器处理,通过反射机制将其中的 @Bean 方法注册为 Spring 容器中的单例 bean。

使用示例

@Configuration
public class AppConfig {
    @Bean
    public MyService myService() {
        return new MyService();
    }
}

注意事项

  • 一般用于配置外部资源、服务或库的实例。

3. @Bean

作用

在配置类中用于声明 Spring 容器管理的 bean。

实现

将方法的返回值注册为 Spring 容器中的一个 bean,方法名默认作为 bean 的 ID,也可以通过 @Bean(name="beanName") 指定。

使用示例

@Bean(name = "customService")
public MyService myService() {
    return new MyService();
}

注意事项

  • 注意 bean 的生命周期和作用域,默认是单例的。

4. @ComponentScan

作用

指定基础包进行组件扫描,将标注了 @Component@Service@Repository@Controller 等注解的类注册为 Spring 容器中的 bean。

实现

Spring 容器会通过类路径扫描指定的包及其子包,将符合条件的类注册为 bean。

使用示例

@ComponentScan(basePackages = "com.example")
public class AppConfig {}

注意事项

  • 避免不必要的扫描,提升启动速度。

5. @EnableAutoConfiguration

作用

启用自动配置,根据类路径、属性文件等自动配置 Spring 应用。

实现

通过 @Import(AutoConfigurationImportSelector.class) 导入自动配置类,自动配置类根据类路径中的依赖、属性文件等条件进行配置。

使用示例

通常与 @SpringBootApplication 一起使用。

注意事项

  • 自动配置可能会引入不必要的配置,可以通过 spring.autoconfigure.exclude 属性排除某些配置。

6. @PropertySource

作用

加载属性文件,将属性文件中的键值对加载到 Spring 的 Environment 中。

实现

通过 @PropertySource 注解指定属性文件的路径,Spring 容器会使用 PropertySource 加载属性文件,并将其键值对添加到 Environment 的属性源列表中。

使用示例

@PropertySource("classpath:application.properties")
@Configuration
public class AppConfig {}

注意事项

  • 属性文件的路径应正确,通常放在 src/main/resources 目录下。

7. @Value

作用

从属性文件中读取值,并将其注入到变量中。

实现

使用 SpEL(Spring Expression Language)从属性源中解析值,并将其注入到标注了 @Value 的变量中。

使用示例

@Value("${my.property}")
private String myProperty;

注意事项

  • 确保属性文件中存在对应的键值,否则会抛出异常。

8. @RestController

作用

标识一个控制器类,其中的方法返回值会自动转换为 JSON/XML 格式。

实现

这是一个组合注解,包含了 @Controller@ResponseBody,表示这是一个控制器类,并且方法返回值会自动序列化为 JSON/XML 格式。

使用示例

@RestController
@RequestMapping("/api")
public class MyController {
    @GetMapping("/data")
    public Data getData() {
        return new Data();
    }
}

注意事项

  • 使用此注解时,确保返回值类型能被序列化为 JSON。

9. @RequestMapping

作用

映射 HTTP 请求到控制器的方法上。

实现

通过注解参数指定请求路径、请求方法等信息,Spring MVC 会将这些信息与控制器方法关联起来。

使用示例

@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
    return "Hello World";
}

注意事项

  • 可以使用 @GetMapping@PostMapping 等更具体的注解来简化配置。

10. @Autowired

作用

自动注入 bean,通常用于注入 Spring 容器中的 bean。

实现

在 bean 创建和依赖注入阶段,Spring 容器会查找与需要注入的 bean 类型匹配的 bean,并将其注入到标注了 @Autowired 的字段或方法中。

使用示例

@Autowired
private MyService myService;

注意事项

  • 确保容器中存在匹配的 bean,若有多个同类型 bean,可使用 @Qualifier 进行区分。
  • 推荐做法:Spring Boot 已经不推荐使用 @Autowired 进行字段注入,建议使用构造器注入。构造器注入更易于测试和维护,且能保证依赖在对象创建时就已完全注入
@Service
public class MyService {
    private final Dependency dependency;

    @Autowired
    public MyService(Dependency dependency) {
        this.dependency = dependency;
    }

    public void performAction() {
        dependency.doSomething();
    }
}

 在这个示例中,MyService 通过构造器注入了 Dependency。这样可以确保 DependencyMyService 被实例化时就已完全注入,且提高了代码的可测试性。


11. @Qualifier

作用

@Autowired 一起使用,用于区分同类型的多个 bean。

实现

通过指定 bean 的名称或 ID,Spring 容器会精确查找并注入相应的 bean。

使用示例

@Autowired
@Qualifier("customService")
private MyService myService;

注意事项

  • 确保指定的 bean 名称存在,避免注入失败。

12. @Profile

作用

标识在特定环境下生效的配置类或 bean。

实现

Spring 容器会根据当前激活的环境(profiles),选择性地加载标注了 @Profile 的配置类或 bean。

使用示例

@Profile("dev")
@Bean
public MyService myService() {
    return new MyServiceDev();
}

注意事项

  • 在启动时需要指定激活的 profile,通常在 application.properties 中配置。

13. @SpringBootTest

作用

用于编写 Spring Boot 集成测试。

实现

通过注解参数配置测试环境,Spring Boot 会启动整个 Spring 应用上下文,以便进行集成测试。

使用示例

@SpringBootTest
public class MyApplicationTests {
    @Test
    public void contextLoads() {
        // 测试应用上下文是否加载成功
    }
}

注意事项

  • 测试方法应标记为 @Test,确保引入 JUnit 等测试库。

通过以上对常用 Spring Boot 注解的详细介绍,希望可以更好地理解和使用这些注解,简化开发过程,提高生产力。

标签:示例,Spring,Boot,MyService,bean,详解,注解,public
From: https://blog.csdn.net/weixin_45970964/article/details/143141046

相关文章

  • 云渲染分布式渲染什么意思?一文详解
    渲染和分布式渲染是现代计算机图形学中的重要技术,它们通过将渲染任务分散到多个服务器或计算节点上,显著提高了渲染效率和处理大规模数据的能力。这项技术在动画制作、游戏开发和电影特效等领域发挥着关键作用,为创作者提供了更快速、更灵活的渲染解决方案。分布式渲染是什么意思?......
  • Python 文件与模块的运行顺序及调用时的执行流程详解【大白话版本!!】
    Python文件与模块的运行顺序及调用执行流程详解引言ython是一种强大的编程语言,具有极大的灵活性和简洁性。无论是在开发小型脚本,还是构建复杂的应用程序时,理解Python文件的运行顺序以及模块调用时的执行流程都至关重要。尤其当你开发大规模项目,涉及到多个模块(文件)之间......
  • python、JavaScript 、JAVA等实例代码演示教你如何免费获取股票数据(实时数据、历史数
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • HONEYWELL霍尼韦尔QCS系统5425400详解
    HONEYWELL霍尼韦尔QCS系统5425400是霍尼韦尔公司提供的一款高质量控制系统,该系统被广泛应用于多个工业领域,以下是关于该系统的详细介绍:一、系统概述HONEYWELL霍尼韦尔QCS系统5425400作为质量控制及系统的重要组成部分,具有高精度、高稳定性和易操作等特点。该系统采用先进的测......
  • 【C语言】自定义类型(结构体、枚举、联合的详解)
    写在前面今天是10月24日来到了一年一度的程序......
  • RSA算法详解及相关数学原理解析
    RSA算法详解及相关数学原理解析前言‍为了记录自己学习密码学的过程,也是为了便于个人应付相关课程的考核,故写此博客。本博客总结了怎么用C++手搓一个RSA算法,以及补补欠缺的一些数学知识和可能欠缺的一些其他算法的实现。参考了其他人的相关博客,用便于我自己理解的话和方式和......
  • 基于SpringBoot和Vue的地方美食分享与推荐网站的设计与实现(源码+定制+开发)地方美食推
    博主介绍:  ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生......
  • SpringBoot助力学生评奖评优系统的现代化
    3系统分析3.1可行性分析通过对本学生评奖评优管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本学生评奖评优管理系统采用SSM框架,JAVA作为开发语言,是基于WEB平......
  • springboot068桂林旅游景点导游平台(论文+源码)_kaic
    桂林旅游景点导游平台摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了桂林旅游景点导游平台的开发全过程。通过分析桂林旅游景点导游平台管理的不足,创建了一个计算机管理桂林旅游景点导游平台的方案。文章介绍了桂林旅游......
  • 改变函数调用上下文:apply与call方法详解及实例
    目录改变函数调用上下文:apply与call方法详解及实例一、什么是apply方法?1、apply语法2、apply示例二、什么是call方法?1、call语法 2、call示例三、apply和call的共同与差异1、apply和call的共同点2、apply和call的差异四、apply和call的其他实......