Spring中的service之间如何调用

互联网 | 编辑: uker编辑2 2007-05-17 00:30:00转载

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

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

}

如果想了解更多英国留学申请 签证 学校排名 留学论坛 等相关信息以及详细资讯,欢迎点击中英网http://www.uker.net/

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑