Java 在另一个类中注入类对象,而不将其添加到构造函数中
我有一个处理程序类,在其中我使用lombok注入依赖项并创建所需的args构造函数。该类如下所示:Java 在另一个类中注入类对象,而不将其添加到构造函数中,java,dependency-injection,constructor,guice,lombok,Java,Dependency Injection,Constructor,Guice,Lombok,我有一个处理程序类,在其中我使用lombok注入依赖项并创建所需的args构造函数。该类如下所示: @RequiredArgsConstructor(onConstructor = @__(@Inject)) class Handler { private final @NonNull ObjectMapper objectMapper; private final @NonNull UserAddressBookDao userAddressBookDao; //Some met
@RequiredArgsConstructor(onConstructor = @__(@Inject))
class Handler {
private final @NonNull ObjectMapper objectMapper;
private final @NonNull UserAddressBookDao userAddressBookDao;
//Some methods below
}
现在,我必须在处理程序类中包含/注入另一个类,即控制器类对象,以便更新的处理程序类为:
@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类,如果我添加了一个新的类成员,我必须在所有这些地方更新代码,才能将新成员添加到构造函数中。我希望将新成员从处理程序类的构造函数中排除,以便避免这种情况。此外,控制器类有很多成员,因为如果我尝试在所需的位置初始化它,将是一个问题。那么,我是否可以将控制器注入到我的处理程序类中,而不将其包含在构造函数中。提前非常感谢,如果问题听起来太模糊,请原谅。
控制器类如下所示:
@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 ...`
- 首先,您必须从
字段中删除Controller
注释和@NotNull
修饰符,因为lombok将为final
@RequiredArgsConstructor
拾取注释和修饰符,因为编译器要求它由构造函数赋值,而您明确地不想在构造函数中设置它final
如果您想保持
,请查看lombok的@NotNull
,其中您明确定义了构造函数将设置哪些参数@someargsconstuctor
- 然后将
注释添加到控制器的setter:@Inject
@Inject-public-void-setController(controller-controller){this.controller=controller;}
。。。因此,它可以由构造函数外部的guice导入
处理程序类中,对吗?控制器类有一个@RestController
注释?您好,是的,我有,但控制器类没有@RestController注释。这只是给类指定的控制器名称。请您也添加控制器的代码好吗?在Spring应用程序中,如果控制器公开API,则应该具有该注释:)我刚刚添加了该注释。它本质上不是春天。我们使用Lombok进行注释。您想用它公开API吗?我没有使用Spring,使用Lombok注释和google guice进行依赖项注入。您的问题下有Spring not guice作为标记。。。让我修复Lombok还没有@SomeArgsConstructor的问题,关于方法注入的解决方案,我正在尝试相同的方法,但控制器是空的。