将 Spring 和 OpenJPA 与 WebSphere Application Server 一起使用
2009-11-03 00:00:00 来源:WEB开发网有时,您最终会遇到 ServletContext 不可用的情形,甚至是在 Web 层中。如果您扩展第三方应用程序或框架,并且希望在代码中使用 Spring Bean,但是该 API 没有向扩展类传递上下文,可能就会发生这种情况。在此情况下,您可以按照上面针对 EJB 层描述的类似方式实例化 Spring 容器。
依赖项注入
使用 Spring,通过一种称为依赖项注入(Dependency Injection,DI)的技术,容器将负责使得对协作对象的引用对依赖对象可用。依赖项注入与用于提供到协作对象的访问的标准 J2EE 机制不同。在 J2EE 中,您使用 JNDI 环境命名上下文(Environment Naming Context,ENC)作为机制,以便通过命名空间使协作对象可用并获得对协作对象的引用。通过使用 JNDI ENC,依赖对象可以显式地请求对某个协作者的引用。
使用 Spring DI 时,程序员请求容器通过使得协作者引用对依赖对象可用,并通过使用构造函数或 setter 注入变体,从而解析依赖项。使用构造函数注入 时,容器在构造函数调用中传递协作者,而在使用 setter 注入时,容器在创建依赖对象后使用 mutator 方法调用传递引用。在这两种情况下,您都需要声明依赖项(例如使用 Spring 配置文件),并向依赖对象类添加对应的构造函数或 mutator 方法。
有关设计模式的经典图书 Design Patterns:Elements of Reusable Object-Oriented Software 提倡“按接口而不是按实现来编程”的设计原则。即使您按接口编程,仍然需要在某个地方实例化实现类。可以简单地以编程方式对其进行实例化,但是这样的话,您的代码将依赖具体的实现类。另一种方法是创建用于实例化实现的工厂类,但是您的代码中仍然存在对实现类的依赖。务必注意的是,即使依赖项可能非常有限并且数量很少,源代码级别的依赖项仍然存在。
- ››Spring源码学习-含有通配符路径解析(上)
- ››WebSphere Application Server 7.0 XML Feature P...
- ››WebSphere 反向投资者: 解决 WebSphere Applicati...
- ››WebSphere sMash 的创新应用,第 2 部分: 借助包装...
- ››Websphere MQ v6集群的负载均衡新功能
- ››WebSphere Process Server V6.0.2 集群,第 2 部分...
- ››WebSphere Process Server V6.0.2 集群,第 1 部分...
- ››WebSphere MQ性能调优浅谈
- ››WebSphere配置资源库管理
- ››WebSphere中的SSL/TLS:用法、配置和性能
- ››websphere ejb远程/本地调用总结
- ››WebSphere Application Server对SIP的支持
更多精彩
赞助商链接