@RequiredArgsConstructor和@Autowired区别
时间: 2024-03-13 18:41:18 浏览: 228
@RequiredArgsConstructor和@Autowired是Java中常用的注解,用于简化代码和实现依赖注入。它们的区别如下:
1. @RequiredArgsConstructor:
- @RequiredArgsConstructor是Lombok库提供的注解,用于自动生成构造函数。
- 当类中的字段被标记为final或者被@NonNull注解修饰时,@RequiredArgsConstructor会生成一个包含这些字段的构造函数。
- 该注解可以减少手动编写构造函数的工作量,提高代码的可读性和简洁性。
2. @Autowired:
- @Autowired是Spring框架提供的注解,用于实现依赖注入。
- 通过@Autowired注解,Spring会自动在容器中查找匹配的Bean,并将其注入到标记了@Autowired的字段、构造函数或者方法参数中。
- @Autowired可以根据类型进行自动装配,也可以结合@Qualifier注解指定具体的Bean名称进行装配。
相关问题
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) 是使用 Lombok 注解的一种方式,用于生成一个带有构造函数的类。在这个注解中,@Autowired 是一个 Spring Framework 的注解,用于自动注入依赖。和引用的描述,这种写法在使用 @RequiredArgsConstructor 注解时是错误的。正确的写法是使用 @RequiredArgsConstructor(onConstructor_ = {@Autowired})。这样的写法可以确保在生成的构造函数中自动注入所需的依赖。
因此,如果你想使用 @RequiredArgsConstructor 注解来生成带有自动注入依赖的构造函数,应该使用如下的写法:
@RequiredArgsConstructor(onConstructor_ = {@Autowired})<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Spring Boot 使用 RequiredArgsConstructor 参数 onConstructor 报错 找不到符号onConstructor_ __解决方法](https://blog.csdn.net/Lance_welcome/article/details/123232468)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [@RequiredArgsConstructor(onConstructor =@_(@Autowired))](https://blog.csdn.net/waitu88/article/details/112474954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
@RequiredArgsConstructor(onConstructor = @__(@Autowired))解析出错
这是一个 Lombok 注解,用于自动生成一个带有 final 标识的成员变量,并在构造函数中进行初始化。其中的 onConstructor 属性表示在哪个构造函数上添加该注解。@__ 表示空注解,这里用于表示构造函数不需要任何参数。@Autowired 表示使用 Spring 的依赖注入机制进行对象的注入。如果出现解析错误,可能是因为您没有正确导入相应的 Lombok 和 Spring 相关依赖,或者没有开启 Lombok 的注解处理器。建议检查一下相关配置和依赖是否正确。
阅读全文