深入理解 Spring Boot 注解:核心功能与高级用法详解

简介: 深入理解 Spring Boot 注解:核心功能与高级用法详解

深入理解 Spring Boot 注解:核心功能与高级用法详解

Spring Boot 是一种用来简化新 Spring 应用的初始搭建及开发过程的框架,采用大量注解来减少配置和加速开发。本文将详细介绍 Spring Boot 常用的注解及其应用,帮助开发者更好地理解和使用这些注解,从而提升开发效率。

1. 核心注解

@SpringBootApplication:这是一个组合注解,包含以下三个注解的功能:

  • @Configuration:标记一个类为配置类,用于定义 Spring Bean。
  • @EnableAutoConfiguration:启用 Spring Boot 的自动配置机制,根据项目中的依赖自动配置 Spring 应用程序。
  • @ComponentScan:指定扫描的包,用于发现和注册 Spring 组件。
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

2. 配置类相关注解

@Configuration:标记一个类为配置类,用于定义 Spring Bean

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

@Bean:用于定义一个 Bean,在配置类中使用。

@Bean
public DataSource dataSource() {
    return new HikariDataSource();
}

3. 自动配置注解

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

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

@ConditionalOnClass:当类路径中存在指定的类时,配置生效。

@Configuration
@ConditionalOnClass(DataSource.class)
public class DataSourceConfig {
    // 配置数据源
}

@ConditionalOnMissingBean:当容器中不存在指定 Bean 时,配置生效。

@Bean
@ConditionalOnMissingBean
public MyService myService() {
    return new MyServiceImpl();
}

4. 组件扫描和注入相关注解

@ComponentScan:指定扫描的包,用于发现和注册组件。

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

@Component:通用组件注解,用于标记一个类作为 Spring 管理的 Bean。

@Component
public class MyComponent {
}

@Service:标记一个类为服务层组件,功能上等同于 @Component,但在语义上更明确。

@Service
public class MyService {
}

@Repository:标记一个类为数据访问层组件,功能上等同于 @Component,并支持异常转换。

@Repository
public class MyRepository {
}

@Controller:标记一个类为 Spring MVC 控制器,功能上等同于 @Component。

@Controller
public class MyController {
}

@RestController:组合注解,包含 @Controller 和 @ResponseBody,用于创建 RESTful Web 服务。

@RestController
public class MyRestController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}

@Autowired:自动注入 Bean,可以用在构造器、方法、属性上。

@Autowired
private MyService myService;

@Qualifier:与 @Autowired 一起使用,用于区分多个候选 Bean。

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

@Primary:当有多个同类型 Bean 时,标记一个 Bean 为首选 Bean。

@Bean
@Primary
public MyService myService1() {
    return new MyServiceImpl1();
}

5. 配置属性相关注解

@Value:注入属性值,可以从配置文件或环境变量中读取。

@Value("${app.name}")
private String appName;

@ConfigurationProperties:将属性文件中的配置映射到一个 Java 类中。

@ConfigurationProperties(prefix = "app")
public class AppProperties {
    private String name;
    private int port;
    // getters and setters
}

6. Web相关注解

@RequestMapping:用于映射请求 URL 到处理方法上,可以用在类和方法上。

@RequestMapping("/home")
public String home() {
    return "home";
}

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping:分别用于映射 GET、POST、PUT、DELETE 请求。

@GetMapping("/user")
public String getUser() {
    return "user";
}

@PathVariable:用于获取 URL 中的路径变量。

@GetMapping("/user/{id}")
public String getUserById(@PathVariable("id") Long id) {
    return "User ID: " + id;
}

@RequestParam:用于获取 URL 中的请求参数。

@GetMapping("/search")
public String search(@RequestParam("q") String query) {
    return "Search Query: " + query;
}

@RequestBody:用于处理请求体中的数据。

@PostMapping("/user")
public String createUser(@RequestBody User user) {
    return "User created";
}

@ResponseBody:表示返回值是响应体的一部分,而不是视图名。

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

@RestControllerAdvice:用于定义全局异常处理、数据绑定等,作用于所有@RestController 注解的类。

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
    }
}

7. 异步和事件处理相关注解

@Async:标记方法为异步执行。

@Async
public void asyncMethod() {
    // 异步执行的代码
}

@EnableAsync:开启异步支持。

@EnableAsync
@SpringBootApplication
public class Application {
}

@EventListener:标记方法为事件监听器。

@EventListener
public void handleEvent(ApplicationEvent event) {
    // 处理事件
}

@EnableScheduling:开启定时任务支持。

@EnableScheduling
@SpringBootApplication
public class Application {
}

@Scheduled:定义定时任务。

@Scheduled(fixedRate = 5000)
public void scheduledTask() {
    // 定时执行的代码
}


通过掌握这些 Spring Boot 注解及其使用方法,可以有效简化 Spring Boot 应用的开发和配置,提高开发效率。

目录
打赏
0
1
1
0
22
分享
相关文章
Spring MVC常用的注解
@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中 的所有响应请求的方法都是以该地址作为父路径。 @RequestBody:注解实现接收http请求的json数据,将json转换为java对象。 @ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。 @Controller:控制器的注解,表示是表现层,不能用用别的注解代替 @RestController : 组合注解 @Conntroller + @ResponseBody @GetMapping , @PostMapping , @Put
Spring Boot的核心注解是哪个?他由哪几个注解组成的?
Spring Boot的核心注解是@SpringBootApplication , 他由几个注解组成 : ● @SpringBootConfiguration: 组合了- @Configuration注解,实现配置文件的功能; ● @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项 ● @ComponentScan:Spring组件扫描
SpringBoot+@Async注解一起用,速度提升
本文介绍了异步调用在高并发Web应用性能优化中的重要性,对比了同步与异步调用的区别。同步调用按顺序执行,每一步需等待上一步完成;而异步调用无需等待,可提升效率。通过Spring Boot示例,使用@Async注解实现异步任务,并借助Future对象处理异步回调,有效减少程序运行时间。
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
21 0
|
1月前
|
SpringBoot:SpringBoot通过注解监测Controller接口
本文详细介绍了如何通过Spring Boot注解监测Controller接口,包括自定义注解、AOP切面的创建和使用以及具体的示例代码。通过这种方式,可以方便地在Controller方法执行前后添加日志记录、性能监控和异常处理逻辑,而无需修改方法本身的代码。这种方法不仅提高了代码的可维护性,还增强了系统的监控能力。希望本文能帮助您更好地理解和应用Spring Boot中的注解监测技术。
73 16
基于SpringBoot+Vue实现的留守儿童爱心网站设计与实现(计算机毕设项目实战+源码+文档)
博主是一位全网粉丝超过100万的CSDN特邀作者、博客专家,专注于Java、Python、PHP等技术领域。提供SpringBoot、Vue、HTML、Uniapp、PHP、Python、NodeJS、爬虫、数据可视化等技术服务,涵盖免费选题、功能设计、开题报告、论文辅导、答辩PPT等。系统采用SpringBoot后端框架和Vue前端框架,确保高效开发与良好用户体验。所有代码由博主亲自开发,并提供全程录音录屏讲解服务,保障学习效果。欢迎点赞、收藏、关注、评论,获取更多精品案例源码。
基于SpringBoot+Vue实现的家政服务管理平台设计与实现(计算机毕设项目实战+源码+文档)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
基于SpringBoot+Vue实现的家乡特色推荐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!