- 浏览: 7328180 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
针对项目中采用IBatis+EJB+RCP作为架构,IBatis没有IOC相关的功能,但是系统中可能采用多个数据源和不同的缓存对象,于是自己现实一个简单针对部分对象的的依赖注入功能实现相关的功能。实现思路如下:
在需要注入的类中添加相关的注解,通过EJB的拦截器机制对注解对象进行注入对象。
package com.easyway.inject; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 元数据注解类的应用 * @author longgangbai * @date 2010-9-7 * @version 1.0 * @since JDK6.0 */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD}) public @interface Inject { /** * 注解字段的名称 * @return */ String fieldName(); }
默认拦截器的类如下:
import java.lang.reflect.Field; import javax.annotation.PostConstruct; import javax.interceptor.AroundInvoke; import javax.interceptor.InvocationContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class InjectorManager { private static Log log = LogFactory.getLog(InjectorManager.class); /** *此处通过PostConstruct对拦截对象是想前置注入 * @param invocation 拦截器上下文 * @return * @throws Exception */ @PostConstruct //@AroundInvoke public Object interceptorInjector(InvocationContext invocation) throws Exception { log.info("调用注解管理,注入ibatis sqlmapclient和cache!"); try { Object fromObject = invocation.getTarget(); Field[] fields = fromObject.getClass().getDeclaredFields(); // 获得基类的成员变量 if (fields.length == 0) { fields = fromObject.getClass().getSuperclass() .getDeclaredFields(); } for (Field field : fields) { field.setAccessible(true); // 处理ibatis注解 if (field.isAnnotationPresent(MMM.class)) { //获取MMM的过程
...................................
field.set(fromObject, mmm)); } // 处理缓存注解 if (field.isAnnotationPresent(XXXXX.class)) { ..................................
} field.setAccessible(false); } return invocation.proceed(); } catch (Exception e) { e.printStackTrace(); throw new SystemException(""); } finally { log.info("注入ibatis sqlmapclient和cache完成!"); } } }
使用如下:
@Stateless @Local(GeneralDAO.class) @Interceptors(InjectorManager.class) public class IBatisGeneralDAO implements GeneralDAO :
基本代码如上,详细代码忽略。。。O(∩_∩)O哈哈~
发表评论
-
JUnit4.1源代码分析
2013-11-19 17:16 2351用JUnit4进行测试有两种方式分别是: (1)、命令 ... -
TestNG参数化测试之支持数据对象
2013-11-19 12:55 1739Junit4与TestNG对比 ... -
深入JUnit源码之Statement
2013-11-19 10:39 2463转载自: http://www.blogjava.net/ ... -
Junit4参数化测试
2013-11-15 17:25 1877现有这样 ... -
SWTBot中junit4通知RunNotifier的使用
2013-11-15 17:20 1646在junit4中的监听接口为Run ... -
[转] J2EE集群原理
2013-07-23 09:57 4528J2EE集群原理 什么是集群呢?总的来说,集群包括两个概念 ... -
实现ireport的JRDataSource接口的想法
2013-05-02 17:13 9507在使用Ireport的时候, ... -
[转]一次 applet 客户端打印 jasperreport 报表任务笔记
2013-05-02 16:31 2561一次 applet 客户端打印 jasperreport ... -
jasperreports报表Flash展现
2013-05-02 15:44 4650jasperreports在web上的报表展现方式有 ... -
Thrift与其他传输方式的比较
2013-04-03 12:15 27534Thrift 是什么? Thrift源于大名鼎鼎的fac ... -
【转】使用Atomikos Transactions Essentials实现多数据源JTA分布式事务
2013-04-03 12:11 6792Atomikos数据源配置方法有三种 Atomikos数 ... -
【转】Apache Thrift入门1-架构&介绍
2013-04-02 13:26 2028Thrift 是什么? Thrift ... -
【转】Thrift入门试用
2013-04-02 12:39 2174在新的项目中公司在平台内部系统间使用Thrift通讯,都没 ... -
【转】thrift的安装
2013-04-02 12:38 2089一、ubuntu下thrift的安装 1.下载源代码 ... -
[转]EJB3.0中的依赖注入,截获器及其在WebLogic Server 10中的扩展
2013-03-02 13:21 23161 前言 与EJB2.1相比,EJB3.0规范引入了两个重要 ... -
[转]通过struts2-ejb3-plugin把Struts2与EJB3.0整合
2013-03-02 13:01 2278本文是讲述使用struts2- ... -
jna使用入门
2012-12-20 14:39 2575JNA(Java Native Access )提供一 ... -
eclipse相关的问题
2012-12-12 11:01 1572打开eclipse后显示Error: co ... -
java并发编程实践笔记
2012-11-28 15:03 1561java并发编程实践笔记 ... -
java中 避免过多的使用同步
2012-11-22 15:41 2246避免过多的使用同步 ...
相关推荐
依赖注入是一种设计模式,它允许我们把一个对象的依赖关系传递给另一个对象,而不是让对象自己去查找或创建依赖。在Spring中,依赖注入可以通过构造器注入、设值注入和接口注入三种方式实现。 1. 构造器注入:通过...
依赖注入是一种设计模式,它允许在运行时将对象的依赖关系动态地传递给对象,而不是在代码中硬编码这些依赖。这一模式的核心思想在于将组件之间的耦合最小化,使组件更易于测试、维护和重用。依赖注入主要关注于两个...
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它使得对象之间的耦合度降低,提高了代码的可测试性和可维护性。本文将深入探讨Spring中的三种依赖注入方式,并结合源码分析其工作...
依赖注入是一种编程模式,它提倡通过外部配置而不是硬编码的方式管理组件之间的依赖关系。这种模式可以显著降低组件间的耦合度,并且使得系统更加灵活和易于测试。 **依赖注入与控制反转** 依赖注入和控制反转...
总结来说,Spring的依赖注入提高了代码的可测试性和可维护性,而前置通知则是AOP的一种实现,它让我们能够方便地插入预处理逻辑。这两个特性共同提升了Spring框架的灵活性和实用性,是现代企业级Java应用开发中的...
泛型依赖注入的另一个优势是,它可以减少编译时的类型转换。在没有泛型依赖注入的情况下,我们可能需要在运行时进行强制类型转换,如`((UserRepository) userService.getDao())`。而现在,由于Spring能够识别并处理...
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它极大地提高了代码的可测试性和可维护性。本篇学习笔记将深入剖析Spring依赖注入的原理,通过源码分析帮助我们理解这一核心机制。...
- Android Jetpack的Hilt是另一个强大的依赖注入库,它不仅支持视图注入,还支持组件依赖注入,提供了一种全面的解决方案。 总之,ButterKnife通过注解简化了Android应用的视图绑定和事件处理,让开发者能更加专注...
Swift 依赖注入(Dependency Injection,简称 DI)是一种设计模式,用于减少代码间的耦合,提高应用的可测试性和可维护性。在这个轻量级 Swift 依赖注入框架中,我们主要探讨的是如何在 Swift 项目中实现这一模式,...
另一方面,面向接口编程是一种重要的设计原则,它提倡在代码中使用接口而非具体实现。在Spring中,我们通常定义一个接口,然后创建其实现类。例如: ```java public interface ExampleService { void doSomething...
"依赖注入是一种软件设计模式" 依赖注入(Dependency Injection)是一种软件设计模式,用于解耦合软件系统中的组件之间的依赖关系。它允许组件之间松散耦合,提高系统的灵活性、可维护性和可扩展性。 在传统的软件...
- **设值方法注入**:另一种常用的依赖注入方式,依赖项通过setter方法在运行时设置。这种方式相对灵活,但可能导致对象状态不一致的问题,因为依赖项可以在任何时候被更改。 使用Spring框架进行设值方法注入时,...
Spring提供了两种主要的依赖注入方式:构造器注入和setter注入。 1. 构造器注入:在类的构造函数中,通过参数接收依赖的对象。Spring容器会在创建实例时传递所需的依赖对象。例如: ```java public class MyClass ...
在Spring框架中,依赖注入是一种关键的设计模式,用于管理和配置应用程序中的对象及其依赖关系。依赖注入分为两种主要类型:属性注入和对象注入。 1. **属性注入**:属性注入是指通过setter方法将依赖项注入到目标...
依赖注入(Dependency Injection,简称DI)是一种设计模式,它有助于减少代码之间的耦合,提高软件的灵活性和可测试性。在MVC5中,Unity是常用的DI容器,它可以帮助我们将依赖的对象实例化并注入到需要它们的地方,...
在软件开发中,依赖注入(Dependency Injection,简称DI)是一种设计模式,用于降低代码之间的耦合,提高可测试性和可维护性。控制反转(Inversion of Control,简称IOC)是DI的核心理念,它将对象之间的依赖关系从...
依赖注入(Dependency Injection,简称DI)是软件设计模式中的一种,它强调将对象间的依赖关系交由外部容器管理,而非由对象自身负责。EJB3.0规范引入依赖注入,大大提高了代码的可测试性和可维护性。在EJB3.0中,...
依赖注入的主要思想是,一个对象(调用者)无需知道如何创建或获取它依赖的另一个对象(被调用者)。这样,调用者和被调用者之间的耦合度降低,增强了代码的可测试性和可维护性。Spring通过两种主要方式实现依赖注入...
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它使得对象之间的耦合度降低,提高了代码的可测试性和可维护性。本示例将深入讲解如何在Spring中通过实例工厂方法实现依赖注入,并...
依赖注入是一种设计模式,它允许我们解耦组件间的依赖关系,提高代码的可测试性和可维护性。在传统的编程方式中,一个类通常会自行创建或查找其依赖的对象,这种方式被称为"硬编码依赖"。而在Spring框架中,依赖注入...