EJB3注解详解:@EJB与@Resource的使用

需积分: 0 12 下载量 147 浏览量 更新于2024-11-11 收藏 113KB PDF 举报
"EJB3中的注释主要涵盖了两个关键的注解:@EJB和@Resource。这些注解在企业级JavaBean(EJB)3.0版本中被用来简化组件的装配和依赖注入,使得开发者无需编写过多的XML配置文件就能管理Bean之间的交互和外部资源的引用。 1. @EJB注释 @EJB注解用于注入EJB Bean实例,它允许开发者直接在字段或方法上声明依赖关系。有两个主要属性: - `beanName`:用于指定EJB的类名,不包含包名。如果一个接口只有一个实现,通常可以省略此属性,因为编译器能够自动推断。 - `mappedName`:用于设置Bean实例在Java Naming and Directory Interface (JNDI)中的全局名称。这样,容器会在运行时查找并注入对应的Bean。 例子中提到,如果使用JBoss-4.0.5.GA,@EJB注解的位置已经从`javax.annotation`包移动到了`javax.ejb`包。这意味着在编写代码时,需要导入正确的包来使用这个注解。 2. 依赖注入之@Resource @Resource注解用于注入JNDI中的任何资源,如数据源、邮件会话等。通过这个注解,开发者可以直接将应用服务器提供的服务绑定到类的成员变量上。 示例展示了如何使用@Resource注解注入数据源: ```java @Resource(mappedName="java:/DefaultMySqlDS") DataSource myDb; ``` 这里的`java:/DefaultMySqlDS`是全局JNDI名称,对应数据源DefaultMySqlDS。如果资源位于本地的`java:comp/env`命名上下文中,只需要提供映射名称即可。 3. 实体Bean与persistence.xml 实体Bean由实体类和`persistence.xml`文件组成。`persistence.xml`通常位于项目的`META-INF`目录下,它定义了实体Bean如何与数据库交互,包括数据源的引用以及EntityManager的行为。 在`persistence.xml`文件中,配置了一个名为"xxx"的`persistence-unit`,指定了数据源`java:/MySqlDS`和Hibernate属性。例如,`hibernate.hbm2ddl.auto`属性设为`create-drop`,表示在应用启动时,Hibernate会自动创建数据库表结构,如果存在则先删除再创建。 总结来说,EJB3.0通过注解大大简化了开发过程,提供了更加直观和便捷的方式来管理Bean实例和资源的注入。@EJB和@Resource注解是其中的关键,它们使得开发者能更专注于业务逻辑,而不是繁琐的配置工作。而`persistence.xml`文件则是实体Bean与数据库交互的桥梁,定义了数据源和持久化策略。"