spring 配置完Service怎么得到Action

写一个手机发送短信的后台处理在包装短信时,今天遇到一个问题:

用的是(WebSphere, spring, hibernate)

我写完了Service后就在ssh(struts2)框架中配置了。hibernate 映射文件和spring配置文件:

但是没有在struts.xml中配置Action ,

这样就在java文件中使用了Service,

以前用ssh时候都是使用ssh框架通过依赖注入得到的Service或者是通过普通的方式new 一个Service得到的,现在就是想用spring配置后在

java类中不用spring依赖注入通过配置文件得到Service,怎么才能得到?
 

见过这种方式(可以得到但是我这老是报NUll异常找不到Service):

  mobileDataService = (MobileDataService)Framework.getEngine().getContainer().getComponent("mobileDataService");
  regionService = (RegionService)Framework.getEngine().getContainer().getComponent("regionService");
  groupToRegionService = (GroupToRegionService)Framework.getEngine().getContainer().getComponent("groupToRegionService");


说明:

mobileDataService,regionService,groupToRegionService 都是在spring中配置过的;如下
 

<bean id="mobileDataService" class="*********.domain.service.MobileDataServiceImpl">
   <property name="***Manager" ref="***Manager"></property>
</bean>

<bean id="regionService" class="************.service.RegionServiceImpl">
  <property name="***Manager" ref="****Manager"/>
  <property name="***Manager" ref="****Manager"/>
 </bean>

<bean id="groupToRegionService" class="************.service.GroupToRegionServiceImpl">
  <property name="***Manager" ref="****Manager"/>
  <property name="***Manager" ref="****Manager"/>
 </bean>

Test.java
(不用配置Action,不用new的方式,怎么得到?)

这个问题是我从网上看来的,在这里给出下自己的思路:

1,可以通过xStream读取spring的配置文件xml,分析每个<bean>的属性(id,class)以及子节点<property>的属性(name,ref)。

2,以<bean>的id为key,class为value的Map的类型。存放系统的的工程环境中,方便全系统调用。

3,最好做到根据xml文件的最后修改时间,时时动态加载,基本原理:每次读取Map时,判断文件最后的修改时间和上一次的修改时间是否一致

,不一致则重新装载Map。

4,在系统的工程环境类中,定义统一的调用service的入口,入参为<bean>的id值,出参为object。
形如:public static Object getServiceCaseByBeanId(String beanId);
通过Java反射机制,生成class对应类的实例,返回给调用者。

4,当每个action层,需要使用service的实例对象时,只需要知道该service接口(类)的<bean>的id,即可取得该类的实例。

你可能感兴趣的:(service)