【发布时间】:2012-07-20 13:02:40
【问题描述】:
我有以下情况:
类ServiceCaller:
public class ServiceCaller{
private Service service;
public void initialize(List<String> params){
//get the params from list and set to String objects
service = new Service(param1,param2);
}
}
课堂服务:
public class Service{
SomeClass classe;
public Service(String param1,String param2){
//call methods to do stuffs with params
classe = new SomeClass();
}
}
我的应用程序有一个框架,它读取一个 .properties 并调用 ServiceCaller 类,然后在构造之后初始化和填充 ServiceCaller 中的参数。 Service 类,只需使用参数,并实例化 SomeClass 类。
我正在尝试将所有这些都传递给 Google Guice,而我的课程是这样的:
类服务调用者:
public class ServiceCaller{
private final Service service;
@Inject
public ServiceCaller(Service service){
this.service = service;
}
public initialize(List<String> params){
//set params to objects...
}
}
和班级服务:
public class Service{
private final SomeClass classe;
@Inject
public Service(SomeClass classe, String param1,String param2){
//call methods to do stuffs with params
this.classe = classe;
}
}
这是我的疑问:我该怎么做?
1 - 在 ServiceCaller 中,注入的构造函数在 initMethod 之前被调用,这样他还没有参数。我认为这会在 Service 类中生成一个 nullPointer。如何接收字符串参数?
2 - 我如何在 ServiceCaller 类中注入服务类?他需要调用init,挂载带参数的Service类,此时才将Service(已经带参数)注入ServiceCaller。
【问题讨论】:
-
谁定义了“参数”?它真的是一个运行时调用还是这些会话/应用程序范围的值(如 wsdl-url、jndi-name、...)?然后您可以通过模块配置这些值并将它们作为“命名”常量注入...
标签: java dependency-injection guice