Spring Boot 中常用注解及其用法

Spring Boot 是一个基于 Spring 框架的快速应用开发平台,它极大地简化了应用的开发过程。在 Spring Boot 中,有许多注解被广泛使用来简化配置和组件扫描。本文将介绍一些常用的 Spring Boot 注解及其用法。

1.@SpringBootApplication

@SpringBootApplication 是 Spring Boot 中最核心的注解,它结合了以下三个注解的功能:

  • @Configuration: 表明该类是一个配置类,可以包含 @Bean 方法。
  • @EnableAutoConfiguration: 启用 Spring Boot 的自动配置功能,自动配置类会根据类路径和应用配置自动配置 Spring Bean。
  • @ComponentScan: 用于扫描并自动装配带有 @Component、@Service、@Repository 或 @Controller 等注解的类。

示例

Java

深色版本

1@SpringBootApplication
2public class Application {
3    public static void main(String[] args) {
4        SpringApplication.run(Application.class, args);
5    }
6}

2.@Configuration

@Configuration 用于标记类作为 Java 配置类,可以包含一个或多个 @Bean 方法来定义 bean 的实例。

示例

Java

深色版本

1@Configuration
2public class AppConfig {
3
4    @Bean
5    public SomeService someService() {
6        return new SomeServiceImpl();
7    }
8}

3.@Component,@Service,@Repository,@Controller

这些注解都是 @Component 的子类型,用于标记特定类型的组件。它们的主要区别在于它们所表示的组件类型:

  • @Component: 通用组件。
  • @Service: 业务服务层组件。
  • @Repository: 数据访问/持久化层组件。
  • @Controller: 控制器组件,处理HTTP请求。

示例

Java

深色版本

1@Service
2public class UserService {
3    public User getUserById(int id) {
4        // ...
5    }
6}

4.@Autowired

@Autowired 用于自动装配bean,它可以作用于字段、构造函数或方法上。

示例

Java

深色版本

1@Service
2public class UserService {
3
4    private final UserRepository userRepository;
5
6    @Autowired
7    public UserService(UserRepository userRepository) {
8        this.userRepository = userRepository;
9    }
10
11    public User getUserById(int id) {
12        return userRepository.findById(id);
13    }
14}

5.@Bean

@Bean 用于在配置类中定义bean。当一个方法被 @Bean 标记后,它的返回值就会被作为bean注册到Spring容器中。

示例

Java

深色版本

1@Configuration
2public class AppConfig {
3
4    @Bean
5    public SomeService someService() {
6        return new SomeServiceImpl();
7    }
8}

6.@RestController

@RestController 是 @Controller 和 @ResponseBody 的组合注解,用于声明一个类为 RESTful 控制器,其所有方法的返回值都将直接写入 HTTP 响应体中。

示例

Java

深色版本

1@RestController
2@RequestMapping("/users")
3public class UserController {
4
5    @GetMapping("/{id}")
6    public User getUser(@PathVariable int id) {
7        // ...
8    }
9}

7.@RequestMapping,@GetMapping,@PostMapping,@PutMapping,@DeleteMapping

这些注解用于映射 HTTP 请求到特定的方法上。@GetMapping 映射 GET 请求,@PostMapping 映射 POST 请求等。

示例

Java

深色版本

1@RestController
2@RequestMapping("/users")
3public class UserController {
4
5    @GetMapping("/{id}")
6    public User getUser(@PathVariable int id) {
7        // ...
8    }
9
10    @PostMapping
11    public User createUser(@RequestBody User user) {
12        // ...
13    }
14}

8.@PathVariable,@RequestParam,@RequestBody,@RequestHeader

这些注解用于从 HTTP 请求中提取数据:

  • @PathVariable: 用于从 URL 中提取路径变量。
  • @RequestParam: 用于从查询字符串中提取参数。
  • @RequestBody: 用于将请求体中的数据绑定到方法参数上。
  • @RequestHeader: 用于从 HTTP 请求头中提取数据。

示例

Java

深色版本

1@RestController
2@RequestMapping("/users")
3public class UserController {
4
5    @GetMapping("/{id}")
6    public User getUser(@PathVariable int id) {
7        // ...
8    }
9
10    @PostMapping
11    public User createUser(@RequestBody User user) {
12        // ...
13    }
14}

9.@Profile

@Profile 用于指定配置文件的环境,可以用来区分开发、测试和生产环境。

示例

Java

深色版本

1@Configuration
2@Profile("dev")
3public class DevConfig {
4    // ...
5}

10.@ConditionalOnBean,@ConditionalOnMissingBean

这些注解用于根据条件决定是否注册某个bean。@ConditionalOnBean 当容器中存在指定的bean时才生效,而@ConditionalOnMissingBean 则是在容器中不存在指定的bean时才生效。

示例

Java

深色版本

1@Configuration
2@ConditionalOnMissingBean(name = "myCustomBean")
3public class CustomConfig {
4    @Bean
5    public MyCustomBean myCustomBean() {
6        return new MyCustomBean();
7    }
8}

11.@EnableAutoConfiguration

@EnableAutoConfiguration 用于启用 Spring Boot 的自动配置功能,通常与 @SpringBootApplication 一起使用。

示例

Java

深色版本

1@Configuration
2@EnableAutoConfiguration
3public class AppConfig {
4    // ...
5}

结论

Spring Boot 中的注解是简化配置和开发流程的重要工具。通过合理使用这些注解,你可以构建出高效、简洁的应用程序。希望这篇文章能帮助你更好地理解和使用 Spring Boot 中的注解。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值