@RequiredArgsConstructor
是 Lombok 库提供的一个注解,它用于自动生成构造函数,这个构造函数会包含类中所有被标记为 final
的字段以及带有 @NonNull
注解的字段。这个注解的目的是简化代码,避免重复编写构造函数。
@RequiredArgsConstructor
注解本身并不涉及按类型注入(Type Injection)或按名称注入(Name Injection)。它只是根据字段的存在来生成构造函数,而不是基于字段的类型或名称进行注入。生成的构造函数参数是按照字段的名称来命名的。
然而,在Spring框架中,当你结合使用 @RequiredArgsConstructor
和Spring的依赖注入(DI)时,Spring会根据类型来自动注入这些字段。Spring的默认注入策略是按类型注入,这意味着Spring容器会查找与构造函数参数类型匹配的bean来自动注入。
例如,如果你有一个Spring组件:
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class MyComponent {
private final SomeDependency someDependency;
// other fields
}
在上面的代码中,SomeDependency
类型的bean将被Spring容器自动注入到 MyComponent
的构造函数中,这是基于类型的注入。Lombok 的 @RequiredArgsConstructor
只是生成了包含 someDependency
参数的构造函数,而Spring则负责实际的依赖注入。