Java Tapestry5在扩展类中使用服务。
我是tapestry5用户,有一个关于在扩展类中使用服务的问题。假设我有以下的类结构 基类Java Tapestry5在扩展类中使用服务。,java,tapestry,Java,Tapestry,我是tapestry5用户,有一个关于在扩展类中使用服务的问题。假设我有以下的类结构 基类 public class BaseClassImpl extends ExtendedOneClass implements BaseClass { @Inject private ServiceOne serviceOne; } 扩展类 public class ExtendedOneClass extends ExtendedTwoClass { @Inject priv
public class BaseClassImpl extends ExtendedOneClass implements BaseClass {
@Inject
private ServiceOne serviceOne;
}
扩展类
public class ExtendedOneClass extends ExtendedTwoClass {
@Inject
private ServiceTwo serviceTwo;
}
扩展二类
public class ExtendedTwoClas {
@Inject
private ServiceThree serviceThree;
}
我需要做什么才能使用扩展类中的服务
我是这样设置AppModule的
public static void bind(ServiceBinder binder) {
binder.bind(BaseClass.class, BaseClassImpl.class);
binder.bind(ExtendedOneClass.class);
binder.bind(ExtendedTwoClass.class);
}
但我似乎无法让服务在扩展类中工作。我假设这是因为扩展类没有被tapestry的@Inject实例化。因此,问题是如何完成此任务?使用构造函数注入并将服务传递给父构造函数:
public class BaseClassImpl extends ExtendedOneClass implements BaseClass
{
private HibernateSessionSource hibernateSessionSource;
public BaseClassImpl(SystemEnvironment systemEnvironment, LinkSource linkSource,
HibernateSessionSource hibernateSessionSource)
{
super(systemEnvironment, linkSource);
}
}
无论如何,您的设置将无法工作,您需要在此设置中添加服务ID,否则您将有多个服务实现同一接口。这将有助于:
binder.bind(ExtendedOneClass.class).withId("ext1");
与此相结合:
@InjectService("ext1")
private ExtendedOneClass extendedOneClass;