`

java 类 调用 sping 的service

 
阅读更多

最近我我开发的一个系统里边有老的代码, 这些老代码没有使用Spring, 我们准备用Spring改写老代码, 但是写到一半, 发现问题很多,然后我们又不想丢掉我们写好的新代码, 所以我们就需要找到一个方法,使我们能够在老的代码里访问Spring的bean. 我们都知道要访问Spring bean 我们就必须得到一个ApplicationContext 或者 BeanFactory 对象, 而ApplicationContext的BeanFactory 的子类, 拥有更强大的功能,ApplicationContext可以在服务器启动的时候自动实例化所有的bean,而 BeanFactory只有在调用getBean()的时候才去实例化那个bean, 这也是我们为什么要得到一个ApplicationContext对象, 事实上Spring2相关的web应用默认使用的是ApplicationContext对象去实例化bean, 换一句话说, 在服务器启动的时候,Spring容器就已经实例化好了一个ApplicationContext对象,所以我们要在老的代码里尝试去获取这个对象。 但是如何才能得到一个ApplicationContext对象呢?方法很多,最常用的办法就是用ClassPathXmlApplicationContext, FileSystemClassPathXmlApplicationContext, FileSystemXmlApplicationContext 等对象去加载Spring配置文件,这样做也是可以, 但是在加载Spring配置文件的时候,就会生成一个新的ApplicaitonContext对象而不是Spring容器帮我们生成的哪一个, 这样就产生了冗余, 所以我们在这里不采用这种加载文件的方式,我们使用ApplicationContextAware让Spring容器传递自己生成的ApplicationContext给我们, 然后我们把这个ApplicationContext设置成一个类的静态变量, 这样我们就随时都可以在老的代码里得到Application的对象了。

ApplicationContextHelper

 

import org.springframework.beans.BeansException;  
  1. import org.springframework.context.ApplicationContext;  
  2. import org.springframework.context.ApplicationContextAware;  
  3. /** 
  4.  * 
  5.  * @author MinFei 
  6.  */  
  7. public class ApplicationContextHelper implements ApplicationContextAware {  
  8.     private static ApplicationContext appCtx;  
  9.     /** 
  10.      * 此方法可以把ApplicationContext对象inject到当前类中作为一个静态成员变量。 
  11.      * @param applicationContext ApplicationContext 对象. 
  12.      * @throws BeansException 
  13.      */  
  14.     @Override  
  15.     public void setApplicationContext( ApplicationContext applicationContext ) throws BeansException {  
  16.         appCtx = applicationContext;  
  17.     }  
  18.     /** 
  19.      * 这是一个便利的方法,帮助我们快速得到一个BEAN 
  20.      * @param beanName bean的名字 
  21.      * @return 返回一个bean对象 
  22.      */  
  23.     public static Object getBean( String beanName ) {  
  24.         return appCtx.getBean( beanName );  
  25.     }  
  26. }  

 

 

 

配置 ApplicationContextHelper

 

<bean id="SpringApplicationContext" class="com.company.helper.ApplicationContextHelper"></bean>  

使用些列方法去得到一个bean

 

BeanExample beanExample= (BeanExample )ApplicationContextHelper.getBean( "beanExample" );  

 

这样我们在老代码里取得了一个Spring配置的对象, 然后我们就可以自由自在的在老代码里边享受Spring提供的功能。

 

 

 

希望本博文对你有帮助。

 

分享到:
评论

相关推荐

    普通类调用Spring bean对象

    当我们需要在非Spring管理的普通类中调用Spring管理的bean对象时,需要掌握特定的方法。这篇文档将详细介绍如何实现这一操作,并探讨相关的源码和技术工具。 首先,理解Spring的核心概念——依赖注入(Dependency ...

    Spring Boot中Controller间的调用

    本文将探讨两种在Spring Boot中实现Controller间调用的方法及其优缺点。 首先,我们可以使用`RestTemplate`来模拟远程调用。这是一种常见的HTTP客户端工具,允许Controller A通过HTTP请求访问Controller B。以下是...

    java动态调用方法

    Java动态调用方法是Java反射机制的一个重要应用,它允许我们在程序运行时,根据需要动态地获取类的信息并调用其方法。这种能力为代码的灵活性和可扩展性提供了强大的支持,尤其在处理不确定的对象类型或者需要在运行...

    外部接口调用 使用spring4+hessian4实例

    在实际应用中,首先我们需要在服务器端创建一个服务接口和其实现类,然后使用Spring4的`@Service`注解标记这个实现类,让Spring管理它。接着,我们需要在服务器端暴露这个服务,这通常通过实现`HessianServlet`并将...

    Java动态调用webService,axis2动态调用webService

    本文将深入探讨如何使用Axis2来动态地调用Web Service,并通过分析`WebServiceInvoker.java`这个文件来理解其实现原理。 1. **Java动态调用Web Service**: 在Java中,动态调用Web Service主要涉及到JAX-WS(Java ...

    openCv+java+spring boot

    开发者可以通过定义Controller层的 endpoints,接收来自前端的HTTP请求,然后通过Service层调用OpenCV的Java绑定来处理图像。 Face++是人脸识别的第三方API,它提供了人脸识别、面部属性分析、活体检测等多种功能。...

    使用spring远程调用服务端接口实现WebService功能

    在Java EE平台上,Spring框架提供了一种强大的方式来实现远程服务调用,特别是通过其HttpInvokerServiceExporter组件来实现基于HTTP的WebService功能。这个技术允许客户端和服务端通过HTTP协议进行通信,实现远程...

    Spring 远程调用 -- C# 访问java WEB 服务

    标题中的"Spring 远程调用"指的是Spring的远程服务访问(Remote Service Access,RSA)。RSA允许服务提供者创建远程服务,而服务消费者可以跨网络调用这些服务。在Web服务上下文中,Spring提供了WebServiceTemplate...

    java project整合spring和hibernate 例子

    在压缩包文件`HiberTest`中,很可能包含了整个示例项目的源代码,包括Spring的配置文件、实体类、DAO、Service以及Controller等。通过分析这些代码,你可以更具体地了解如何在实际项目中整合Spring和Hibernate,从而...

    java 视频 摄像 调用电脑摄像头

    例如,你可以创建一个`CameraService`接口和它的实现类`WebcamCameraService`,然后在Spring配置文件中声明这个服务,并通过@Autowired注解注入到需要使用摄像头的类中。这样,当需要调用摄像头时,只需依赖注入的`...

    Java调用Webservice服务,简单实用

    总的来说,Java调用Web Service服务是一个相对简单的过程,主要依赖于JAX-WS提供的工具和接口。通过理解这些基本概念和技术,你可以轻松地将各种Web Service集成到你的Java应用程序中,实现跨系统的数据共享和业务...

    java调用.net发布的webservice(asmx)

    本文将详细讲解如何使用Java调用.NET发布的Web Service(ASMX),并解决在此过程中可能出现的SOAPAction报错和“Server not identified”错误。 首先,我们需要了解ASMX。ASMX是.NET Framework早期版本中用于创建...

    17. Spring Boot普通类调用bean【从零开始学Spring Boot】

    在Spring Boot框架中,普通类调用bean是常见的操作,特别是在构建复杂应用时。这篇博客“17. Spring Boot普通类调用bean【从零开始学Spring Boot】”旨在指导初学者如何在非Spring管理的类中访问和使用Spring容器中...

    spring中service生命周期(xml/annotation)

    使用`@Service`注解的类会被Spring容器识别为一个Bean,但默认不会执行任何初始化或销毁操作。 若要添加初始化和销毁逻辑,我们可以使用`@PostConstruct`和`@PreDestroy`这两个JSR-250注解。`@PostConstruct`标注的...

    spring远程调用简单实例

    在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建高质量的、松散耦合的、可测试的应用程序提供了强大的支持。Spring框架的一大特色就是其远程调用能力,这使得分布式系统的开发变得更加便捷。本实例将...

    http和WebService 调用接口Java代码demo

    本示例主要关注通过HTTP协议和Web Service技术进行接口调用的Java实现,具体以Spring Boot框架为基础。下面我们将深入探讨这些知识点。 首先,HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于...

    工作流中ServiceTask的各种方法

    ServiceTask也可以通过activiti:delegateExpression属性来调用Spring Bean。在下面的示例代码中,我们将调用delegateExpressionBean: ```xml &lt;serviceTask id="serviceTask1" activiti:delegateExpression="${...

    java调用插件代码.rar

    Java调用插件代码是一个常见的需求,特别是在构建可扩展性和模块化的软件系统中。这个压缩包文件"java调用插件代码.rar"包含了相关的代码示例,可能用于演示如何在Java环境中加载和执行外部插件。下面将详细介绍Java...

    java调用webservice接口方法

    Java调用WebService接口方法是Java开发中常见的任务,尤其在分布式系统和跨平台通信中扮演着重要角色。这里我们主要探讨使用Apache Axis库来实现这一功能。Apache Axis是一款开源工具,它提供了Java到SOAP(简单对象...

    Spring事务管理A方法内部调用B方法的回滚问题测试代码

    在提供的"demo"压缩包中,应该包含了一个Spring项目,其中包含了上述的配置和服务类实现。通过运行这些测试,你可以看到事务管理如何在A方法调用B方法时工作,以及在异常情况下如何回滚事务。这个示例代码对于理解和...

Global site tag (gtag.js) - Google Analytics