科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Spring中的service之间如何调用

Spring中的service之间如何调用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在基于struts+spring+hibernate的开发框架下,一般service都是直接通过在Struts的action中getBean("yourServiceName")来获取。

作者:中国IT实验室 来源:中国IT实验室 2007年9月23日

关键字: Spring 编程 java

  • 评论
  • 分享微博
  • 分享邮件
    在基于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) {
    }

}

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章