SpringBoot注解大全(必知必会)

SpringBoot注解大全(必知必会)

正确使用 SpringBoot 注解,可以减少不必要的配置和维护工作,让我们更加专注于业务逻辑的实现,极大地简化了开发流程。

反之,如果 SpringBoot 注解使用不当,可能会导致代码难以维护、性能下降、甚至出现安全漏洞。

本文,全面总结了 25 个最为核心的 SpringBoot 注解,以及其作用、功能和使用示例。

大家好,我是爱分享的程序员宝妹儿。

点击蓝字可获取: SpringBoot 面试题合集(最新整理)

注解名 作用
@SpringBootApplication 标记 Spring Boot 应用的主类,并自动进行配置
@RestController 声明一个控制器类,用于处理 RESTful 请求
@RequestMapping 映射 HTTP 请求的路径到控制器的方法上
@Autowired 自动装配依赖对象
@ComponentScan 扫描指定包及其子包下的组件,并将其注册为 Spring 管理的 Bean
@Configuration 声明一个配置类
@Bean 声明一个 Bean 对象
@Value 注入外部配置文件中的属性值到变量中
@Profile 根据指定的配置文件激活或禁用 Bean 的加载
@Conditional 根据指定的条件决定是否加载 Bean
@PathVariable 获取 URL 路径中的参数值
@RequestParam 获取请求参数的值
@RequestBody 将请求体中的内容绑定到方法参数上
@PostMapping 处理 HTTP POST 请求
@GetMapping 处理 HTTP GET 请求
@Service 声明一个服务层组件
@Repository 声明一个数据访问层组件
@EnableAutoConfiguration 自动配置 Spring Boot 应用的类路径下的所有配置
@EnableCaching 启用 Spring 缓存功能
@EnableAsync 启用异步方法的执行
@Transactional 声明事务的范围
@RestControllerAdvice 全局控制器增强,用于处理全局异常、全局数据绑定等
@Validated 参数校验注解,用于标记需要进行参数校验的类或方法
@ConfigurationProperties 将配置文件中的属性值绑定到一个 Bean 对象上
@Scheduled 标记一个方法为定时任务方法,用于定时执行任务

 

1.  @SpringBootApplication

@SpringBootApplication 是一个组合注解,用于标注 SpringBoot 应用程序的主类。

它包含了@Configuration、@EnableAutoConfiguration 和 @ComponentScan 注解的功能,简化了配置和启动过程。

示例:

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

 

2. @RestController

@RestController 注解用于标注控制器类,表示该类处理 HTTP 请求并返回 RESTful 风格的响应。

它相当于 @Controller 和 @ResponseBody 的组合,简化了开发 RESTful 接口的过程。

示例:

@RestController
public class UserController {
    @GetMapping("/users")
    public List<User> getUsers() {
        // 返回用户列表
    }

    @PostMapping("/users")
    public User createUser(@RequestBody User user) {
        // 创建用户
    }
}

 

3. @RequestMapping

@RequestMapping 注解用于映射 HTTP 请求路径到控制器的方法上。

可以用于处理 GET、POST、PUT、DELETE 等不同类型的请求,并支持路径变量、请求参数等的定义。

示例:

@RestController
@RequestMapping("/api")
public class UserController {
    @GetMapping("/users")
    public List<User> getUsers() {
        // 返回用户列表

@GetMapping("/users/{id}")
public User getUserById(@PathVariable("id") Long id) {
// 根据用户ID获取用户信息
}
@PostMapping("/users")
public User createUser(@RequestBody User user) {
// 创建用户
}
@PutMapping("/users/{id}")
public User updateUser(@PathVariable("id") Long id, @RequestBody User user) {
// 根据用户ID更新用户信息
}
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable("id") Long id) {
// 根据用户ID删除用户
}

4. @Autowired

@Autowired 注解用于自动装配依赖对象,实现对象的自动注入。

它可以用于构造方法、属性和方法上,简化了依赖注入的配置过程。

示例:

@Service
public class UserService {
    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    // 其他业务方法...
}

 

5. @ComponentScan

@ComponentScan 注解用于自动扫描并注册 Spring 组件,包括控制器、服务、存储库等。

它会根据指定的包路径自动发现标有 @Component 及其派生注解的类,并将其注册为 Spring 组件。

示例:

@SpringBootApplication
@ComponentScan("com.example")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

 

6. @Configuration

@Configuration 注解用于标识配置类,表示该类包含 Bean 定义的方法。

在 SpringBoot 中,通常与 @Bean 注解一起使用,用于定义和注册 Bean。

示例:

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

    // 其他Bean定义方法...
}

 

7. @Bean

@Bean 注解用于定义 Bean 对象,表示该方法返回的对象将被 Spring 容器管理。

在 @Configuration 注解的类中使用,用于声明依赖对象的创建和配置。

示例:

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

    @Bean
    public UserRepository userRepository() {
        return new UserRepository();
    }

    // 其他Bean定义方法...
}

 

8. @Value

@Value 注解用于注入外部配置文件中的属性值到变量中。

它可以用于字段、方法参数和方法返回值,使得配置值的使用更加方便。

示例:

@Service
public class UserService {
    @Value("${app.user.defaultRole}")
    private String defaultRole;

    // 其他业务方法
}

 

9. @Profile

@Profile 注解用于标记特定的配置或组件,使其在特定的环境或配置条件下生效。

可以通过在应用程序的配置文件中设置不同的profile来选择性地加载相应的配置和组件。

示例:

@Configuration
@Profile("development")
public class DevelopmentConfig {
    // 开发环境下的配置...
}

@Configuration
@Profile("production")
public class ProductionConfig {
    // 生产环境下的配置...
}

 

10.  @Conditional

@Conditional 注解用于根据条件来决定是否注册 Bean 或配置组件。

可以根据特定的条件判断,动态地控制 Bean 的创建和注册过程。

示例:

@Configuration
public class ConditionalConfig {
    @Bean
    @Conditional(DatabaseTypeCondition.class)
    public DataSource dataSource() {
        // 根据条件判断选择不同的数据源类型进行创建和配置
    }
}

public class DatabaseTypeCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        // 根据特定条件判断是否满足创建数据源的条件
    }
}

 

11. @PathVariable

@PathVariable 注解用于从请求路径中获取路径变量的值,并将其绑定到方法参数中。

示例:

@GetMapping("/users/{id}")
public User getUserById(@PathVariable("id") Long id) {
    // 根据id查询用户信息
    return userService.getUserById(id);
}

 

12. @RequestParam

@RequestParam 注解用于获取请求参数的值,并将其绑定到方法参数中。

示例:

@PostMapping("/users")
public User createUser(@RequestParam("name") String name,
                       @RequestParam("age") int age) {
    // 创建用户并返回结果
    return userService.createUser(name, age);
}

 

13. @RequestBody

@RequestBody 注解用于将请求体的内容绑定到方法参数或对象中。

示例:

@PostMapping("/users")
public User createUser(@RequestBody User user) {
    // 创建用户并返回结果
    return userService.createUser(user);
}

 

14. @PostMapping

@PostMapping 注解用于将方法映射到 HTTP POST 请求,并指定请求路径。

示例:

@PostMapping("/users")
public User createUser(@RequestBody User user) {
    // 创建用户并返回结果
    return userService.createUser(user);
}

15. @GetMapping

@GetMapping 注解用于将方法映射到 HTTP GET 请求,并指定请求路径。

示例:

@GetMapping("/users/{id}")
public User getUserById(@PathVariable("id") Long id) {
    // 根据id查询用户信息
    return userService.getUserById(id);
}

 

16. @Service

@Service 注解用于标识一个类为业务逻辑层的组件,由 Spring 进行管理。

示例:

@Service
public class UserService {
    // 业务逻辑代码
}

 

17. @Repository

@Repository 注解用于标识一个类为数据访问层的组件,由 Spring 进行管理。

示例:

@Repository
public class UserRepository {
    // 数据访问代码
}

 

18. @EnableAutoConfiguration

@EnableAutoConfiguration 注解用于启用 SpringBoot 的自动配置功能,根据项目的依赖自动配置应用程序。

示例:

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

 

19. @EnableCaching

@EnableCaching 注解用于启用 Spring 的缓存功能,可以在方法上添加缓存相关的注解,例如 @Cacheable、@CacheEvict 等,以实现方法级别的缓存控制。

示例:

@Service
@EnableCaching
public class ProductService {

    @Cacheable("products")
    public List<Product> getAllProducts() {
        // 从数据库中获取产品列表
        return productRepository.getAllProducts();
    }

    @CacheEvict(value = "products", allEntries = true)
    public void refreshCache() {
        // 清除产品缓存
    }
}

 

20. @EnableAsync

@EnableAsync 注解用于启用 Spring 的异步方法执行功能,可以在方法上添加 @Async 注解,使方法异步执行。

示例:

@Service
@EnableAsync
public class EmailService {

    @Async
    public void sendEmail(String recipient, String message) {
        // 异步发送邮件
    }
}

21. @Transactional

@Transactional 注解用于标识方法或类需要在事务管理下执行,保证方法的原子性和一致性。

示例:

@Service
public class OrderService {

    @Transactional
    public void createOrder(Order order) {
        // 创建订单并保存到数据库
    }
}

 

22. @RestControllerAdvice

@RestControllerAdvice 注解用于定义全局异常处理器,处理应用中抛出的异常,并返回适当的响应信息。

示例:

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception ex) {
        // 处理异常并返回响应
    }
}

 

23. @Validated

@Validated 注解用于在控制器方法的参数上添加校验注解,实现请求参数的校验功能。

示例:

@RestController
public class UserController {

    @PostMapping("/users")
    public User createUser(@Validated @RequestBody User user) {
        // 校验用户信息并创建用户
    }
}

 

24. @ConfigurationProperties

@ConfigurationProperties 注解用于将外部配置文件中的属性值绑定到Bean中,实现配置的统一管理。

示例:

@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {

    private String name;
    private String version;

    // 省略getter和setter

}

25. @Scheduled

@Scheduled 注解用于指定方法定时执行的时间规则,实现定时任务的功能。

示例:

@Service
public class TaskService {

    @Scheduled(cron = "0 0 0 * * ?")
    public void runDailyTask() {
        // 每天执行一次的任务
    }
}

 

总结

SpringBoot 的核心注解提供了简化开发、减少配置和提高效率的功能,对于快速开发高效的应用程序至关重要。

正确使用 SpringBoot 的核心注解,可以减少繁琐的配置工作,专注于业务逻辑的实现,提高开发效率和质量。

以上是常用的 SpringBoot 注解,以及其作用、功能和示例代码的总结,希望对大家有用。

我是爱分享的程序员宝妹儿,谢谢关注 Java面试题宝

如果觉得不错,请【点赞+转发+关注】一键三连支持下。

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧