Java Spring Boot的核心注解是什么,它是由哪几个注解组成的

2024-01-03 13:31:51

Java Spring Boot的核心注解是什么,它是由哪几个注解组成的

Spring Boot的核心注解主要包括以下几个:

  1. @SpringBootApplication: 这是一个复合注解,包含了多个注解,用于标识一个Spring Boot应用。它的定义如下:

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
                                      @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
    public @interface SpringBootApplication { /* ... */ }
    

    这个注解包含了以下三个注解:

    • @SpringBootConfiguration: 标识该类是Spring Boot的配置类。
    • @EnableAutoConfiguration: 启用自动配置,Spring Boot会根据项目的依赖自动配置应用的上下文。
    • @ComponentScan: 开启组件扫描,扫描指定包及其子包下的被@Component等注解标记的类。
  2. @RestController: 标识一个类是RESTful风格的控制器,用于处理HTTP请求,相当于@Controller和@ResponseBody的组合。

  3. @RequestMapping: 映射HTTP请求到控制器处理方法。用于类和方法上,可以指定请求的路径、HTTP方法等。

  4. @Autowired: 用于进行依赖注入,可以标注在字段、构造方法、Setter方法上。

  5. @Service、@Repository、@Component: 用于标识一个类是服务类、仓储类或通用组件,分别用于标注服务层、数据访问层和通用组件。

  6. @Configuration: 用于定义配置类,替代传统的XML配置文件。

下面是一个简单的Spring Boot应用的示例,演示了这些核心注解的使用:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class MyApplication {

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

@RestController
@RequestMapping("/api")
class MyController {

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

在这个例子中,@SpringBootApplication注解标识了主应用类,@RestController@RequestMapping注解标识了一个简单的RESTful风格的控制器。当应用启动时,Spring Boot会自动扫描并加载这些注解标记的类,并进行相应的配置和初始化。

文章来源:https://blog.csdn.net/sanmansan/article/details/135282110
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。