关于tapestry5 ServiceResources的问题

使用过tapestry5的开发者都会对tapestry的service注入方式很熟悉,比如用以下的方式注入一个service到一个tapestry页面class里:
@Inject
private IDateFormatConvertor dateFormatConvertor;
但是如何在在自己的代码里来得到相应的service实例呢?就像spring中的Bean bean = context.getBean("BeanName"),因为在某些具体的情况下我觉得这样的方式还是很有用处的,可以动态的使用不同的service。相应的,tapestry-ioc也提供了ObjectLocator.getService(...)这样的方法来实现相应的功能。但是tapestry5似乎没有将这个具体的实现ServiceResources的实例暴露给使用者(这是我通过粗略了解tapestry5的代码所得到的结论)。但是如果我重新初始化一个Registry的话又会有重复的问题,所以我使用了一个临时的方式来解决这个问题,具体如下:
将以下的代码放到自己的任意一个Module里
public static ServiceResources buildServiceResources(Collection<serviceresources> c){
     return c.iterator().next();
 }
   
 public static void contributeServiceResources(Configuration<serviceresources> c, ObjectLocator locator){
      c.add((ServiceResources)locator);
 }
</serviceresources></serviceresources>
这样就可以将ServiceResources以普通service的形式暴露给开发者了。我可以将其注入到任意一个service可以注入的地方:  
@Inject
private ServiceResources serviceResources;
以上只是在我能力范围内的没有办法的选择,如果哪位朋友有更好的方式请告诉我,谢谢。<serviceresources><serviceresources></serviceresources></serviceresources>

你可能感兴趣的:(spring,c,bean,tapestry,idea)