@RequiredArgsConstructor(onConstructor = @__(@Autowired))

简介: `@RequiredArgsConstructor(onConstructor = @__(@Autowired))` 是一个注解,通常用于在类中生成一个包含所有`final`和`@NonNull`注解的字段的构造函数,并且对这些字段进行自动注入(使用Spring框架的`@Autowired`注解)。让我们详细解释一下:1. **`@RequiredArgsConstructor` 注解:** - **作用:** Lombok 提供的注解,用于自动生成类的构造函数。 - **生成的构造函数:** 生成一个包含所有`final`字段的构造函数,同时也包括被`@NonNull`注解

@RequiredArgsConstructor(onConstructor = @__(@Autowired)) 是一个注解,通常用于在类中生成一个包含所有final@NonNull注解的字段的构造函数,并且对这些字段进行自动注入(使用Spring框架的@Autowired注解)。让我们详细解释一下:

  1. @RequiredArgsConstructor 注解:

    • 作用: Lombok 提供的注解,用于自动生成类的构造函数。
    • 生成的构造函数: 生成一个包含所有final字段的构造函数,同时也包括被@NonNull注解修饰的字段。
  2. onConstructor = @__(@Autowired)

    • 作用: 这是 Lombok 的一种配置方式,用于在生成的构造函数上添加额外的注解,这里是@Autowired
    • @Autowired 注解: Spring 框架的注解,用于自动装配 Bean。通过在构造函数上添加@Autowired,Spring 将会在创建该类的实例时自动注入相应的依赖。

优点:

  • 简化代码: 使用 Lombok 的@RequiredArgsConstructor可以减少手动编写构造函数的工作,使代码更加简洁。
  • 自动注入: 通过在构造函数上添加@Autowired,可以实现依赖的自动注入,提高代码的可维护性和灵活性。

缺点:

  • 依赖性: 使用 Lombok 注解使得代码更加依赖于特定的注解处理工具。如果项目中没有配置 Lombok 或者其他开发人员不熟悉 Lombok,可能会导致理解和维护的困难。
  • 灵活性: 自动生成的构造函数可能不够灵活,无法满足复杂的依赖注入需求。在某些情况下,手动编写构造函数可能更合适。

综合考虑,使用这个注解的优缺点取决于具体的项目需求和团队的开发习惯。如果简化代码和自动注入是主要优先考虑的因素,并且团队熟悉并接受 Lombok,那么这个注解可能是一个有用的工具。否则,可能需要谨慎使用,以免引入不必要的复杂性。

相关文章
|
2月前
|
Java Spring 容器
@Autowired和@Resource
@Autowired和@Resource
|
5月前
|
Java
@RequiredArgsConstructor(onConstructor_ = @Autowired)报错
@RequiredArgsConstructor(onConstructor_ = @Autowired)报错
|
4月前
|
Java Spring
@PostConstruct注解的使用
@PostConstruct注解的使用
92 0
@RequiredArgsConstructor(onConstructor=@_(@Autowired))是什么语法?
@RequiredArgsConstructor(onConstructor=@_(@Autowired))是什么语法?
210 0
|
6月前
|
Java Spring 容器
同一接口有多个实现类,怎么来注入一个指定的实现?@Resource、@Autowired、@Qualifier
同一接口有多个实现类,怎么来注入一个指定的实现?@Resource、@Autowired、@Qualifier
235 0
|
11月前
RequiredArgsConstructor
RequiredArgsConstructor
84 1
|
6月前
|
Java Spring
spring注解@Autowired、@Resource说明
spring注解@Autowired、@Resource说明
|
12月前
|
Java Spring 容器
@PostConstruct使用
@PostConstruct使用
59 0
|
Java Spring 容器
@Inject和@Autowired的区别
@Inject和@Autowired的区别
|
Java Spring
@GetMapping注解
@GetMapping注解