Có hai cách tôi biết để có được một thể hiện EJB: dependency injectionEJB3 - lấy đậu thông qua tiêm vs tra cứu - sự khác biệt, tác động, gotchas là gì?
- trong servlets và EJB qua chú thích @EJB
- JNDI tra cứu qua Context.lookup bất cứ nơi nào
là gì sự khác biệt, hàm ý và gotchas trong việc sử dụng một trong các cách tiếp cận này? Họ có giống nhau không? Là phụ thuộc tiêm nhanh hơn tra cứu? Điều gì về xử lý giao dịch và quản lý vòng đời đối tượng?
Những điều tôi biết bao gồm:
chú thích
- làm việc với servlets và và EJB chỉ
- cú pháp thuận tiện
- chứa độc lập
tra cứu
- có thể khởi tạo các triển khai khác nhau của giao diện EJB theo chương trình tại thời gian chạy.
- hoạt động ở mọi nơi - ví dụ: POJO.
- phụ thuộc vào quy ước đặt tên của container
Điều đó sai. Nếu nó được chứa bởi thùng chứa, điều đó có nghĩa là bạn có thể dễ dàng tiêm nó vào các thử nghiệm, ví dụ: 'MyBean bean = new MyBean(); bean.injectedBean = new Mock() '. Việc tìm kiếm trong tra cứu phức tạp hơn, đặc biệt nếu mã phụ thuộc vào 'InitialContext() mới'. Làm thế nào để bạn trả lại một phiên bản đặc biệt của bối cảnh cho các bài kiểm tra của bạn? – ewernli