Java EE 6 中的上下文和依赖注入
简介
Java Platform, Enterprise Edition (Java EE) 5 将具有惯例优于配置的依赖注入 (DI) 引入 Enterprise JavaBeans (EJB) 3.0 中。除了已有的 @EJB
批注之外,Java EE 6 还引入了灵活、强大的 @Inject
依赖注入模型(JSR-330 和 JSR-299)。
EJB 3 依赖注入的使用极其简单。使用 配置 EJB 3 依赖注入
@EJB
批注即可注入一个已声明的 bean。将 MessageSession bean 注入 Servlet 3.0 中如下所示: @WebServlet(name="Messenger", urlPatterns={"/Messenger"}) public class Messenger extends HttpServlet { @EJB MessageSession session; // }
注入的 MessageSession
bean 可以是接口视图 bean,也可以是无接口视图 bean。只要仅存在接口的一个实现,便可注入该 bean 而无需任何形式。需要配置只是为了明确选择。
@Stateless @Local(MessageSession.class) public class PersistentMessageSession implements MessageSession{ @Override public String getReceivedMessage() { return "From persistent. Received at: " + new Date(); } } @Stateless @Local(MessageSession.class) public class TransientMessageSession implements MessageSession { //...implementation }