我有一个Handler类,在其中使用lombok注入依赖项并创建所需的args构造函数。该类如下所示:
@RequiredArgsConstructor(onConstructor = @__(@Inject))
class Handler {
private final @NonNull ObjectMapper objectMapper;
private final @NonNull UserAddressBookDao userAddressBookDao;
//Some methods below
}
现在我必须在处理程序类中包含/注入另一个类,即Controller类对象,以便更新的处理程序类为:
@RequiredArgsConstructor(onConstructor = @__(@Inject))
class Handler {
private final @NonNull Mapper mapper;
private final @NonNull UserDao userDao;
//newly added class member
private final @NonNull Controller controller;
//Some methods below ...'
}
我不想在构造函数中使用新的类成员,因为我在服务中的很多地方都使用了处理程序类,如果我添加了新的类成员,则必须在所有这些地方更新代码以添加新的类成员。成员进入构造函数。我希望将新成员从Handler类的构造函数中排除,以便避免这种情况。控制器类也有很多成员,因为如果我尝试在必需的地方进行初始化,这将是一个问题。所以,无论如何,我可以将Controller注入到我的处理程序类中,而不必将其包含在构造函数中。预先非常感谢您,如果问题听起来太模糊,请原谅。控制器类如下所示:
@Singleton
@RequiredArgsConstructor(onConstructor = @__(@Inject))
public class Controller {
@NonNull
private final ABCService abcClient;
@NonNull
private final DdbDao DdbDao;
@NonNull
private final ServiceAccessor serviceAccessor;
`Some methods below ...`
@NotNull
字段中删除final
批注和Controller
修饰符,因为lombok将其用于@RequiredArgsConstructor
。在任何情况下都应删除final
,因为编译器要求由构造函数分配它,并且您特别不想在构造函数中设置它。如果要保留@NotNull
,请查看lombok的@SomeArgsConstructor
,在其中明确定义要传入的参数。@Autowired
注释添加到controller: @Autowired setController(Controller controller) {this.controller = controller;}