【发布时间】:2014-05-05 11:19:16
【问题描述】:
我有一个 JavaFX 应用程序,我想在其中介绍 Guice,因为我的代码 现在到处都是工厂,只是为了测试。
我有一个用例,我有一个特定视图的控制器类。 这个控制器类有一个视图模型,我通过模型将模型传递给视图模型 控制器类的构造函数。
在控制器类中,我有一个提供编辑/保存/删除操作的联系服务对象。 到目前为止,我拥有该对象的接口并提供了一个实现和一个 Mock。此对象可以通过 Factory.getInstance() 方法检索。
我想做的是这样的:
public class NewContactController implements Initializable {
// ------------------------------------------------------------------------
// to inject by guice
// ------------------------------------------------------------------------
private ContactService contactService;
@Inject
public void setContactService(ContactService srv) {
this.contactService = srv;
}
// edit window
public NewContactController(Contact c) {
this.viewModel = new NewContactViewModel(c);
}
// new window
public NewContactController() {
this.viewModel = new NewContactViewModel();
}
@FXML
void onSave(ActionEvent event) {
//do work like edit a contcat,
contactService.editContact(viewModel.getModelToSave());
}
@Override
public void initialize(URL location, ResourceBundle resources) {
// bind to viewmodel---------------------------------------------------
}
}
我怎样才能做到这一点?做这样的事情是个好主意吗? 当我在寻找解决方案时,我发现了fx-guice 和类似的框架,但是我如何将这两者结合起来呢? 特别是我怎样才能让这些字段被注入并自己实例化控制器,或者至少给它一些构造函数参数?
【问题讨论】:
标签: java dependency-injection javafx guice