ring中的service之间如何调用

文章作者 100test 发表时间 2007:09:06 13:31:41
来源 100Test.Com百考试题网


在基于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) {
}

}


感觉有点麻烦,有更简便的办法了么?

这篇文章大家可以参考一下,和本文有类似之处:
Struts调用Spring服务类的三种方法



相关文章


三种Windows版本下教你如何卸载Oracle
J 中的自定义标签由浅到深详细讲解
如何才算真正的掌握Java语言(J2SE篇)
oracle事务隔离级别,用jdbc体验
ring中的service之间如何调用
微软考试模拟试题:NTWorkstation4试题一
微软考试模拟试题:NTWorkstation4试题二
模拟试题:SCJP035经典104题分析笔记(一)
模拟试题:SCJP035经典104题分析笔记(二)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛