SpringBoot注解总结,这25个经常会用到,值得深入掌握!

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

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

本文主要介绍 25 个最为核心的 SpringBoot 注解,以及其作用、功能和使用示例。

文末附我创作的:《2023版 SpringBoot 面试题合集》及《SpringBoot 最全学习路线》

Spring Boot 学习路线

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 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 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 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 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 ,前段时间我创作了《2023版 SpringBoot 面试题合集》及《SpringBoot 最全学习路线》

如果有需要的话,我的账号主页看第一篇文章。

Spring Boot 学习路线


总结

正确使用 SpringBoot 注解,可减少繁琐的配置工作,让我们更加专注于业务逻辑的实现。

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

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

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

---end---

展开阅读全文

页面更新:2024-03-01

标签:注解   示例   用户信息   路径   组件   定义   参数   功能   方法   用户

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top