EJB 3.0开辟指南之依靠注入[Java编程]
本文“EJB 3.0开辟指南之依靠注入[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
依靠注入(Dependency Injection),又称作掌握反转(IOC),本来是一种计划情势,目前被吵得热火朝天,有点过了.对比闻名项目如String,picoContainer等.
在EJB3.0中,可以通过在字段和设置办法上加上注释注入依靠,我想在很快会有新的项目,大概在本来的项目的底子上,一些IOC容器会采取注释的方法注入依靠,JDK5.0加入的注释的确是一个很强盛的功效,相对而言,在.net中的属性却没有施展那么大的代价.这就是开源的威力,不计其数的在开源java程序员不断涌现出新的设法新的功效.
看下面的例子:我们知道,JBOSS中已经默许配置了一个数据源,它的JNDI名称是"java:/DefaultDS".下面这个例子声明了一个数据源,通过注释,便可以将JBOSS的这个默许的数据源赋值给它.
@Resource(jndiName="java:/DefaultDS")
public DataSource customerDB;
Resource注释的声明
@Target({TYPE, METHOD, FIELD, PARAMETER}) @Retention(RUNTIME)
public @interface Resource {
String name() default "";
String resourceType() default "";
AuthenticationType authenticationType() default CONTAINER;
boolean shareable() default true;
String jndiName() default "";
}
public enum Authentication Type {
CONTAINER,
APPLICATION
}
@Target(TYPE) @Retention(RUNTIME)
public @interface Resources {
Resource[] value();
}
Resource的name指向一个在环境属性中命名的资源,AuthenticationType用来指定是容器还是EJB组件来举行身份考证,sharebale指定能否同享,jndiName用来指定JDNI中的名称.resourceType()用来指定资源的范例.
假如name和resourceType都指向被注释的程序成员,AuthenticationType和resourceType都是缺省的,则可以利用Inject注释:
@Inject(jndiName="java:/DefaultDS")
public DataSource customerDB;
关于单例的成员,你可以更简化:
@Inject javax.ejb.SessionContext ctx;
@Inject javax.ejb.TimerService timer;
@Inject javax.ejb.UserTransaction ut;
@Inject javax.ejb.EntityManager manager;
Resources注释可以注入多个资源.
在Eclipse中导入本文供应的例子DI.
这个例子从数据库中读取JMS_USER表,并显示表中的内容.这个例子利用依靠注入的方法得到JBOSS默许的数据源.
这个例子主要有5个文件:
JmsUsers.java:业务接口.
JmsUsersBean.java:业务实现类.将来我们开辟的EJB也都是这样命名(在接口名上加上Bean).
Client.java:测试EJB的客户端类.
jndi.properties:jndi属性文件,供应拜候jdni的基本配置属性.
Build.xml:ant 配置文件,用以编译、公布、测试、排除EJB.
下面针对每个文件的内容做一个介绍.
JmsUsers.java
package com.kuaff.ejb3.di;
import java.util.List;
import javax.ejb.Remote;
import javax.sql.*;
@Remote
public interface JmsUsers
{
public List<String> getUsers();
}
以上是“EJB 3.0开辟指南之依靠注入[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |