• Java spring boot常用注解


    Spring Boot是一个基于Spring框架的开发框架,它简化了Spring应用的配置和部署过程,提供了一系列注解来帮助开发人员快速构建可靠和高效的应用程序。本文将详细介绍Spring Boot中常用的注解及其使用方法。

    Spring Boot注解可以分为以下几个方面:应用程序入口注解、控制器注解、请求注解、参数绑定注解、依赖注入注解、组件注解、条件注解、配置注解等。

    一、应用程序入口注解

    1. @SpringBootApplication

    @SpringBootApplication是一个组合注解,用于标记一个主启动类,表示这是一个Spring Boot应用程序的入口点。它包含了以下三个注解的功能:@Configuration、@EnableAutoConfiguration和@ComponentScan。

    @Configuration注解表示这个类是一个配置类,它会提供一些初始化配置。

    @EnableAutoConfiguration注解表示启用自动配置功能,Spring Boot会根据依赖和配置自动配置应用程序。

    @ComponentScan注解表示扫描和加载应用程序中的组件。

    2. @Configuration

    @Configuration注解用于标记一个类为Spring的配置类。配置类中可以定义Bean对象和配置相关的信息。在配置类中,可以使用@Bean注解来定义一个Bean对象。例如:

    @Configuration
    public class AppConfig {
    @Bean
    public UserService userService() {
    return new UserServiceImpl();
    }
    }

    在上面的例子中,AppConfig类被标记为配置类,userService()方法被@Bean注解标记为一个Bean对象的创建方法。

    二、控制器注解

    1. @RestController

    @RestController注解用于标记一个类为Restful控制器,使其能够处理HTTP请求并返回JSON或XML等数据格式的响应。与@Controller注解不同的是,@RestController注解会自动将方法的返回值转换为HTTP响应体,并返回给客户端。例如:

    @RestController
    @RequestMapping(“/api/user”)
    public class UserController {
    @GetMapping(“/{id}”)
    public User getUser(@PathVariable(“id”) int id) {
    // 根据id查询用户信息
    User user = userService.getUserById(id);
    return user;
    }
    }

    在上面的例子中,UserController类被标记为Restful控制器,getUser()方法被@GetMapping注解标记为处理GET请求的方法。方法的返回值User会被自动转换为JSON格式并返回给客户端。

    2. @RequestMapping

    @RequestMapping注解用于标记一个方法或类的方法,表示它可以处理来自客户端的HTTP请求。可以通过设置value、method、params、headers等属性来指定请求的URL路径、请求方法、参数或头等条件。例如:

    @RestController
    @RequestMapping(“/api/user”)
    public class UserController {
    @GetMapping(“/{id}”)
    public User getUser(@PathVariable(“id”) int id) {
    // 根据id查询用户信息
    User user = userService.getUserById(id);
    return user;
    }
    }

    在上面的例子中,@RequestMapping(“/api/user”)表示UserController类中的方法处理以/api/user开头的请求。@GetMapping(“/{id}”)表示getUser()方法处理以GET方法和路径中包含{id}的请求。

    三、请求注解

    1. @PathVariable

    @PathVariable注解用于将URL路径中的变量绑定到方法的参数上。例如,@RequestMapping(“/api/user/{id}”),可以使用@PathVariable(“id”) int id来获取URL路径中的id值。例如:

    @RestController
    @RequestMapping(“/api/user”)
    public class UserController {
    @GetMapping(“/{id}”)
    public User getUser(@PathVariable(“id”) int id) {
    // 根据id查询用户信息
    User user = userService.getUserById(id);
    return user;
    }
    }

    在上面的例子中,@GetMapping(“/{id}”)表示getUser()方法处理以GET方法和路径中包含{id}的请求。@PathVariable(“id”) int id表示将路径中的id值绑定到方法的id参数上。

    2. @RequestParam

    @RequestParam注解用于将请求参数绑定到方法的参数上。可以设置value、required、defaultValue等属性来指定请求参数的名称、是否必需和默认值。例如:

    @RestController
    @RequestMapping(“/api/user”)
    public class UserController {
    @GetMapping
    public List getUsers(@RequestParam(value = “name”, required = false) String name) {
    // 根据name查询用户列表
    List userList = userService.getUsersByName(name);
    return userList;
    }
    }

    在上面的例子中,@RequestMapping(“/api/user”)表示UserController类中的方法处理以/api/user开头的请求。@GetMapping表示处理GET方法的请求。@RequestParam(value = “name”, required = false) String name表示将名为name的请求参数绑定到方法的name参数上,并指定name参数为可选参数。

    四、参数绑定注解

    1. @RequestBody

    @RequestBody注解用于将请求体中的数据绑定到方法的参数上。通常用于接收JSON或XML格式的请求数据。例如:

    @RestController
    @RequestMapping(“/api/user”)
    public class UserController {
    @PostMapping
    public User createUser(@RequestBody User user) {
    // 创建用户
    userService.createUser(user);
    return user;
    }
    }

    在上面的例子中,@PostMapping表示处理POST方法的请求。@RequestBody User user表示将请求体中的JSON数据转换为User对象,并绑定到方法的user参数上。

    2. @ResponseBody

    @ResponseBody注解用于将方法的返回值转换为HTTP响应体,并返回给客户端。通常用于返回JSON或XML格式的数据。例如:

    @RestController
    @RequestMapping(“/api/user”)
    public class UserController {
    @GetMapping
    public List getUsers() {
    // 查询用户列表
    List userList = userService.getUsers();
    return userList;
    }
    }

    在上面的例子中,@RequestMapping(“/api/user”)表示UserController类中的方法处理以/api/user开头的请求。@GetMapping表示处理GET方法的请求。方法的返回值List会被自动转换为JSON格式并返回给客户端。

    五、依赖注入注解

    1. @Autowired

    @Autowired注解用于自动装配一个Bean对象。Spring Boot会自动查找并将匹配的Bean对象注入到目标对象中。例如:

    @RestController
    @RequestMapping(“/api/user”)
    public class UserController {
    @Autowired
    private UserService userService;

    // 省略其他方法...
    
    • 1

    }

    在上面的例子中,@Autowired注解将userService属性注入到UserController类中。Spring Boot会自动查找UserService类的实现并注入到属性中。

    六、组件注解

    1. @Component

    @Component注解用于标记一个类为Spring的一个组件。可以用于自动扫描和自动装配。例如:

    @Component
    public class UserServiceImpl implements UserService {
    // 省略实现代码…
    }

    在上面的例子中,UserServiceImpl类被标记为一个组件。Spring Boot会自动扫描并将其注册为一个Bean对象。

    2. @Service

    @Service注解用于标记一个类为Spring的一个服务类。通常用于业务逻辑的实现。例如:

    @Service
    public class UserServiceImpl implements UserService {
    // 省略实现代码…
    }

    在上面的例子中,UserServiceImpl类被标记为一个服务类。Spring Boot会自动扫描并将其注册为一个Bean对象。

    3. @Repository

    @Repository注解用于标记一个类为Spring的一个仓库类。通常用于数据访问的实现。例如:

    @Repository
    public class UserRepositoryImpl implements UserRepository {
    // 省略实现代码…
    }

    在上面的例子中,UserRepositoryImpl类被标记为一个仓库类。Spring Boot会自动扫描并将其注册为一个Bean对象。

    七、条件注解

    1. @Conditional

    @Conditional注解用于基于条件来决定是否创建一个Bean对象。可以使用@ConditionalOnProperty、@ConditionalOnClass、@ConditionalOnBean等条件注解来配置条件。例如:

    @Configuration
    public class AppConfig {
    @Bean
    @ConditionalOnProperty(name = “useInMemoryStorage”, havingValue = “true”)
    public UserRepository userRepository() {
    return new InMemoryUserRepository();
    }

    @Bean
    @ConditionalOnProperty(name = "useInMemoryStorage", havingValue = "false")
    public UserRepository userRepository() {
        return new DatabaseUserRepository();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    }

    在上面的例子中,根据条件useInMemoryStorage的值来决定创建哪个UserRepository的实现类。

  • 相关阅读:
    jmeter 主从配置
    java-net-php-python-SSM的美工接单系统计算机毕业设计程序
    使用svm-svc算法对乳腺癌进行预测
    手把手带你使用ZigBee——通过爱智控制EFR32,以及 Simplicity Studio 使用过程中注意事项
    SpringSecurity源码学习二:异常处理
    根据关键词取商品列表 API 返回值说明
    node 学习 - HTTP模块
    2023年海南省职业院校技能大赛(高职组)应用软件系统开发赛项规程
    PTA 小字辈(树)
    记录在搭建Jenkins时,所遇到的坑,以及解决方案
  • 原文地址:https://blog.csdn.net/hitpter/article/details/133640117