★ 什么是资源?
开发过程中与业务无关的服务、类的实例或者变量的值。比如:Apusic J2EE应用服务器管理的JDBC服务是资源,用户开发的EJB、WebService是资源、用户定义的配置文件也是资源。
★ 为什么要资源注入?
大多数企业级java应用程序都使用了诸如DataSources,EJBs或WebService的外在的资源和服务,在J2EE 1.4中,用户必须在部署描述符中明确声明所依赖的资源或者使用JNDI的lookup方法去获得资源的引用。
最初目的是为了减少应用与资源的依赖度,具体可以参考IoC(控制反转)和DI(依赖注入),但现在作者认为优点很多:
1. 减少应用与资源的依赖度,便于应用的后期组装。例如:将数据库连接池在后期组装时作为资源注入到系统中,这样使应用在开发过程中不会与资源绑定。
2. 简化应用的复杂度,使程序员开发中更多关注业务。例如:通过标注将资源在变量定义的时候注入进去,开发人员直接可以使用变量,而无须再通过代码获得。
3. 规范应用的开发过程,提升应用后期运行的稳定性。例如:通过注入的方式使用资源,而无须在开发期管理资源的生命周期以及创建与销毁,避免出现重复创建或者内存泄漏。
★ 哪些资源可以注入?
数据源、JMS目的地、环境变量、EJB、WebService、上下文资源、Managed Bean、Spring Bean、LocalString
★ 如何注入和使用资源?
// Apusic系统日志,采用的是JDK 1.4的日志系统
@Inject
private java.util.logging.Logger logger;
public void IndexBean() {
logger.info("初始化IndexBean!");
}
// JavaServer Faces的相关资源
// JSF的FacesContext
@Inject
private javax.faces.context.FacesContext fContext;
// 获取应用的HttpRequest
HttpServletRequest request=(HttpServletRequest)fContext.getCurrentInstance().getExternalContext().getRequest();
// 获取应用的HttpResponse
HttpServletResponse request=(HttpServletResponse)fContext.getCurrentInstance().getExternalContext().getResponse();
// 获取应用的HttpSession
HttpSession session=(HttpSession) fContext.getCurrentInstance().getExternalContext().getSession(true);
// JSF的服务器实例
@Inject
private javax.faces.application.Application app;
// JSF的导航句柄
@Inject
private javax.faces.application.NavigationHandler nHandler;
// JSF的EL表达式工厂实例
@Inject
private javax.el.ExpressionFactory expFactory;
// JSF的事件广播者实例
@Inject
private org.operamasks.faces.event.EventBroadcaster event;
// 相同生命周期的ManagedBean,参考CRUD例子
@Inject
private IndexBean indexBean;
// JNDI资源注入
// 数据库连接池资源注入
@Resource(mappedName = "jdbc/CRUD")
private javax.sql.DataSource CRUD;
Connection con = CRUD.getConnection();
// 消息工厂资源注入
@Resource(mappedName="jms/ConnectionFactory")
private javax.jms.ConnectionFactory connFactory;
// 消息主题资源注入
@Resource(mappedName="testTopic")
private javax.jms.Topic topic;
// 消息队列资源注入
@Resource(mappedName="testQueue")
private javax.jms.Queue queue;
// 事务服务资源注入,一个线程只提供一个事务服务,因此不需要提供名称直接可以注入
@Resource
private javax.transaction.UserTransaction tx;
// EJB资源注入
@EJB(name="com.apusic.examples.crud.second.service.PersonService")
IPersonService personService;
// 资源文件的注入,注意:只能注入前缀为LocalStrings的文件组
@LocalString
private Map<String, String> messages;
messages.get("WindowBean.email.required");
// 配置文件注入上下文资源
在faces-config.xml中在需要注入的bean中加入managed-property属性和值
<managed-bean>
<managed-bean-name>windowBean</managed-bean-name>
<managed-bean-class>
com.apusic.examples.crud.second.bean.WindowBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>injectName</property-name>
<property-class>java.lang.String</property-class>
<value>Operamasks</value>
</managed-property>
</managed-bean>
在WindowBean.java中直接定义
private String injectName;
public void setInjectName(String injectName) { // 通过这个函数提供资源注入
this.injectName = injectName;
}
★ 参考资料
http://www.matrix.org.cn/resource/article/2006-04-05/Dependency+Injection_44321.html
★ 备注
本文现在只介绍了基础资源注入知识,随着作者本人对资源注入的理解,将会继续补充与完善。
分享到:
相关推荐
Apusic OperaMasks很全的JSF的例子,什么都有,如:TREE 、GRID、FORM、BOX、MENU、DIALOG、AJAX。都很漂亮的。
Apusic OperaMasks 2 参考手册(中文)
Apusic OperaMasks――开箱即用的Web Framework,它以JSF为基础引擎,辅以独创的原生Ajax技术,同时提供丰富的组件和集成开发环境,使Web开发变得简单方便。无论是后台的事 务、存储、分布式计算等基础服务,还是...
HR 演示系统以企业内部人力资源管理系统为原型,通过该示例,您可以体验到使用OperaMasks开发一个小型系统的富客户端体验。 Apusic OperaMasks――开箱即用的Web Framework,它以JSF为基础引擎,辅以独创的原生Ajax...
本快速入门指南介绍了金蝶 Apusic 应用服务器软件(简称 AAS)V10 产品安装、启动、 卸载、管理与使用等基本操作,为用户快速使用本产品提供指导。 金蝶 Apusic 应用服务器为复杂应用提供了一个简便、快速的开发和...
Apusic服务器解决数据源的资源引用 Apusic服务器下数据源的资源引用的解决办法
Apusic密码修改指引
系统平台配置,APUSIC资源配置
金蝶中间件(Apusic)--license
Apusic 7.0,2014,license,
operamasks开发Apusic工程连接mysql数据库,其他数据库类似
金蝶中间件Apusic Eclipse/MyEclipse all-plugins,用于集成在eclipse做调试开发
2021年通用apusic license,适用于apusic9.0以上EAS(EAS8.0以上版本一般都可用),有效期到2021年12月31日。此apusic为5个连接数
管理Apusic Web服务器,管理Apusic Web服务器
Apusic5.1域配置,希望对正在使用Apusic5.1服务器的工作团队有所帮助。
EAS Apusic2016年的临时许可
金蝶Apusic应用服务器6.0是一款标准、安全、高效、集成并且具有丰富功能的企业级应用服务器(Enterprise Application Server),它用于实现基于SOA的企业应用和服务,为企业应用和服务提供坚不可摧的基础架构支撑。...
apusic文件,apuasic是国产中间件,隶属金蝶 中国. 数据库连接攻略
Apusic+SQL-Server的调优记录
EAS apusic5.0 许可.许可到期时间2088年!