您的位置:

Spring Boot 注解详解

一、常用的Spring Boot 注解

Spring Boot 是一个快速创建 Spring 应用程序的框架,其基于 Spring 框架,可以轻松快捷地搭建生产级别的应用程序。在 Spring Boot 的开发过程中,使用注解可以大大简化开发工作,以下是常用的 Spring Boot 注解:

  • @SpringBootApplication:标识 Spring Boot 应用的主类,兼有 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的功能。
  • @RestController:使一个类成为 REST 风格的 Spring MVC 控制器,等价于添加 @Controller 和 @ResponseBody 注解。
  • @RequestMapping:用于映射 HTTP 请求到控制器的处理方法上,可以用来设置 URL、请求参数、请求方法、请求头等属性。
  • @PathVariable:用于将 URI 模板变量映射到控制器处理方法的参数上。
  • @RequestParam:用于将请求参数映射到控制器处理方法的参数上。
  • @Autowired:用于自动注入 Spring Bean。
  • @Qualifier:在自动注入 Bean 的基础上,按照 Bean 名称或 qualifying annotation 进行限定。
  • @ConfigurationProperties:用于将配置文件中的属性映射到 Bean 的属性上。
  • @Bean:用于在 Spring 容器中注册 Bean。
  • @Component:通用的 Spring 组件注解。

二、常用注解的使用示例

1、@RestController 和 @RequestMapping

以下示例展示了如何使用 @RestController 和 @RequestMapping 实现一个简单的控制器,输出 "Hello, World!":

@RestController
public class GreetingController {

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

}

2、@PathVariable 和 @RequestParam

以下示例展示了如何使用 @PathVariable 和 @RequestParam 处理 URL 上的参数,并输出结果:

@RestController
public class UserController {

    @RequestMapping("/users/{id}")
    public String getUserInfo(@PathVariable Long id, @RequestParam String name) {
        return "User #" + id + " name is " + name;
    }

}

3、@Autowired 和 @Qualifier

以下示例展示了如何使用 @Autowired 和 @Qualifier 自动注入 Spring Bean,并通过限定名称输出 Bean 的属性值:

@Component
public class User {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

@Service
public class UserService {

    @Autowired
    @Qualifier("user") // 限定名称为 "user" 的 Bean
    private User user;

    public String sayHello() {
        return "Hello, " + user.getName() + "!";
    }

}

@Configuration
public class AppConfig {

    @Bean
    public User user() {
        User user = new User();
        user.setName("Tom");
        return user;
    }

}

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/hello")
    public String hello() {
        return userService.sayHello();
    }

}

4、@ConfigurationProperties 和 @Value

以下示例展示了如何使用 @ConfigurationProperties 将配置文件中的属性映射到 Bean 的属性上,并使用 @Value 注解输出配置文件的属性值:

@Configuration
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

@RestController
public class MyController {

    @Autowired
    private MyConfig myConfig;

    @Value("${my.config.desc}")
    private String desc;

    @RequestMapping("/hello")
    public String hello() {
        return "Hello, " + myConfig.getName() + "! " + desc;
    }

}

三、小结

Spring Boot 通过注解的方式,极大地简化了常规的配置工作,从而提高了开发效率。本文介绍了常用的 Spring Boot 注解,并且给出了相关的代码示例,以帮助读者更好地理解和使用 Spring Boot。