Spring中的service之间如何调用

在基于struts+spring+hibernate的开发框架下,一般service都是直接通过在Struts的action中getBean(“yourServiceName”)来获取,那么如果在serviceA中想调用serviceB中的方法该如何呢?

直接new 一个serviceB是不行的,因为里面可能还有依赖注入的dao等其他本来需要容器管理的资源,可以象在action中一样getBean()么?

获得applicationContext就可以了:

AppContext : public class AppContext {  private static ApplicationContext applicationContext;  public static ApplicationContext getApplicationContext() {    return applicationContext;  }  public static void setApplicationContext(      ApplicationContext applicationContext) {    AppContext.applicationContext = applicationContext;  }}

SpringService:

public class SpringBeanService {  private static SpringBeanService instance;  private ApplicationContext applicationContext;  public static synchronized SpringBeanService getInstance() {    if (instance == null) {      instance = new SpringBeanService();    }    return instance;  }  public ApplicationContext getApplicationContext() {    return this.applicationContext;  }  public void setApplicationContext(ApplicationContext applicationContext) {    this.applicationContext = applicationContext;  }  public UserService getUserService(){    return (UserService)AppContext.getApplicationContext().getBean("userService");  }  }

ApplicationContext的初始化:

public class ConfigLoadListener implements ServletContextListener {  public void contextInitialized(ServletContextEvent contextEvent) {    try {      WebApplicationContext context =WebApplicationContextUtils.getRequiredWebApplicationContext(contextEvent.getServletContext());      AppContext.setApplicationContext(context);      //读配置      try {        ServletContext context2=contextEvent.getServletContext();        String path=context2.getInitParameter("setting.properties");        InputStream in =context2.getResourceAsStream(path);        Properties properties = new Properties();        properties.load(in);        GlobalConstant.setCmdbProperties(properties);        in.close();      } catch (IOException e) {        e.printStackTrace();      }    } catch (HibernateException e) {      System.out.println("系统无法初始化,异常退出");      System.out.println(e);    }  }  public void contextDestroyed(ServletContextEvent contextEvent) {  }}

可我,仍在旅行的路上徘徊。等待着每一辆经过的车,让我走到更远的地方。

Spring中的service之间如何调用

相关文章:

你感兴趣的文章:

标签云: