springboot常用注解
Spring Boot 是基于 Spring 框架的部分组件进行封装,所以大部分注解都是 Spring 框架中常用的注解。下面是 Spring Boot 中常用的注解:
-----------------------------------------------------------------------
1、@SpringBootApplication:这个注解是 Spring Boot 应用的入口标志,同时也标注了这是一个Spring Boot 应用程序。
这个注解通常使用在项目的启动类上,例如:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
2、@RestController:用于标注一个类是一个 RESTful 接口的控制器。
@RestController 是 Spring Boot 中的一个注解,用于标注一个类为 RESTful Web 服务的控制器。它可以被用来处理 HTTP 请求,常见的操作包括获取数据、更新数据、删除数据等。
@RestController 注解是一个复合注解,它包含了 Spring 的 @Controller 注解和 @ResponseBody 注解。@Controller 注解用来标注一个类为 Spring MVC 控制器,而 @ResponseBody 注解则用来指定方法返回的结果直接写入 HTTP 响应体中。
@RestController 的主要作用是简化 RESTful Web 服务的开发,它能够自动将 Java 对象转换为 JSON/XML 数据格式,方便客户端进行解析和使用。通过 @RestController 可以在类中定义多个方法来处理不同的 HTTP 请求,使代码更为清晰和易于维护。
3、@RequestMapping:用于映射请求到控制器方法。
4、@PathVariable:用于提取请求 URL 中的参数信息。
5、@RequestParam:用于提取请求头或请求参数中的参数信息。
6、@RequestBody:用于接收请求体中的数据信息,用于将 HTTP 请求的请求体(一般是 JSON 格式)映射到 Java 对象。
@PostMapping("/user") public String createUser(@RequestBody User user) { return "User " + user.getName() + " created!"; }
7、@ResponseBody:用于返回响应体中的数据信息。
8、@Autowired:用于标注一个类是需要自动装配的 Bean 对象。
@RestController、@RequestMapping、@PathVariable、@RequestParam、@RequestBody、@ResponseBody、@Autowired
这几个注解通常一起使用来实现 RESTful 接口,例如:
@RestController @RequestMapping("/api") public class UserController {
@Autowire
private UserRepository userRepository
@GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userRepository.findById(id); } @PostMapping public User createUser(@RequestParam String name, @RequestParam int age) { User user = new User(name, age); return userRepository.save(user); } @PutMapping("/{id}") public User updateUser(@PathVariable Long id, @RequestBody User user) { user.setId(id); return userRepository.save(user); } @DeleteMapping("/{id}") public void deleteUser(@PathVariable Long id) { userRepository.deleteById(id); } }
@PathVariable
和 @RequestParam
都是 Spring MVC 中用于处理请求参数的注解,但是它们有一些区别。
@RequestParam
注解用于将请求参数绑定到方法处理的参数上,它可以用来处理除了请求体之外的所有参数,包括查询参数、表单提交参数和 URL 中的参数。例如:
@GetMapping("/example") public String handleExampleRequest(@RequestParam("id") Long id, @RequestParam("name") String name) { // ... }
上面的例子中,@RequestParam
注解将 “id” 和 “name” 请求参数绑定到了方法的参数上,这些参数可以通过请求的 URL 或表单提交来设置。
而 @PathVariable
注解则用于将 URL 中的占位符参数绑定到方法处理的参数上。例如:
@GetMapping("/example/{id}") public String handleExampleRequest(@PathVariable("id") Long id) { // ... }
上面的例子中,@PathVariable
注解将 URL 中的 “id” 占位符参数绑定到了方法的参数上,这个参数可以通过请求的 URL 中进行设置。
可以看到,@RequestParam
注解用于处理 HTTP 请求中的键值对参数,而 @PathVariable
注解用于处理URL中的动态参数。
9、@Component:用于标注一个类是 Spring 组件,可以被 Spring 自动扫描并添加到 Spring 容器中。
10、@Configuration:用于标注一个类是 Spring 的配置类,在这个类中可以定义 Bean 对象以及其他配置信息。
11、@Value:用于注入配置文件中的属性值。
12、@ConditionalOnProperty:用于在配置文件中某个属性存在时才加载对应的配置信息。
@Component
是 Spring Framework 提供的基本注解之一,可以用来将一个普通的类标记为 Spring 容器中的一个 Bean,表示这个类的对象实例可以被 Spring 所管理。一般而言,我们将需要在不同的模块中共用的实例都注入到 Spring 容器中,以便程序中的各个模块共享并使用。
下面是一个简单的例子,展示了如何使用 @Component
注解将一个类注册为 Spring Bean:
@Component public class ExampleBean { // ... }
@Value
是用来获取 Spring 配置文件中的属性值的注解。例如,我们可以在 Spring Boot 的 application.properties 或 application.yml 文件中定义一些属性值,然后使用 @Value
注解注入到程序中。
以下是一个使用 @Value
注解获取属性值的例子:
@Component public class ExampleBean { @Value("${example.property}") private String property_value; // ... }
上面的例子中,我们使用 @Value
注解注入了一个名为 example.property
的属性值,并将其赋值给了 property_value
字段。
@ConditionalOnProperty
是一个条件注解,可以根据配置文件中的属性值来决定是否启用一个特定的配置类或 Bean。在实际中,我们有时候需要针对特定的属性值和特定的情况来决定启用或不启用某个特定的配置。
以下是一个使用 @ConditionalOnProperty
注解启动条件的例子:
@Configuration @ConditionalOnProperty( name = "example.feature.enabled", havingValue = "true", matchIfMissing = true ) public class ExampleConfig { // ... }
上面的例子中,我们使用了 @ConditionalOnProperty
注解,将一个配置类标记为当名称为 example.feature.enabled
的属性值为 true
时才会被启用。同时,设置了 matchIfMissing
为 true
,表示如果该属性没有在配置文件中找到,也会被默认匹配。