2015-03-16 25 views
8

Tôi hiện đang chuẩn bị nghiên cứu dự án cuối cùng của mình. Tôi phải phát triển một ứng dụng phân tán để quản lý nguồn nhân lực, nhưng trên tiêu chuẩn của tôi cho các công nghệ để sử dụng, tôi cảm thấy khó hiểu khi quyết định giữa mùa xuân hoặc EJB 3.1.Mùa xuân và EJB (lợi thế và bất lợi)

Tôi không biết cái nào phù hợp nhất và dễ sử dụng nhất. Tôi là người mới bắt đầu cho cả hai công nghệ và do đó tôi hy vọng một người nào đó có thể giúp tôi.

+2

http://stackoverflow.com/questions/7076144/ejb-3-1-or-spring-3-when-to-choose-which-one – elsadek

Trả lời

34

Bạn không chọn giữa EJB và Spring, bạn thực sự chọn giữa Java EE và Spring vì EJB chỉ là một phần của Java EE bao gồm các thành phần khác như JMS, Servlets, JSP, JSF, CDI, v.v. mô hình lập trình Java phiên bản J2EE 1.4 ngày đầu có rất nhiều lỗi và thiếu sót, nhưng quan trọng nhất là nó rất tẻ nhạt và tiết tú với rất nhiều mã đĩa nồi hơi và tấn cấu hình xml. Spring đã được giới thiệu như là một khuôn khổ thay thế, ủng hộ nguyên tắc quy ước trên cấu hình. Nói cách khác, trong mùa xuân có một số mặc định hợp lý có thể được cấu hình lại nếu bạn cần. Java EE 5 đã giới thiệu những thay đổi quan trọng bằng cách sử dụng nguyên tắc cấu hình quy ước tương tự từ mùa xuân, làm giảm đáng kể số lượng mã và độ phức tạp cần thiết để có được mọi thứ, vì vậy trong mùa xuân này không có bất kỳ lợi thế nào nữa.

Điều quan trọng cần lưu ý là Java EE chỉ là một đặc điểm kỹ thuật. Để xây dựng một ứng dụng thế giới thực, bạn cần triển khai thực hiện và có rất nhiều ứng dụng ngày nay - Glassfish, JBoss, TomcatEE, v.v. cung cấp các triển khai khác nhau về đặc tả Java EE giới thiệu tính phức tạp bổ sung - Ý tôi là, bây giờ bạn phải chọn triển khai Java EE nào chọn. Bạn có thể hiểu rằng với Spring xuất phát từ một nguồn duy nhất.

Cả hai khung công tác đều cung cấp cho bạn khá nhiều chức năng tương tự. Tất cả các giao dịch hỗ trợ, ORM, cung cấp các công cụ để xây dựng logic nghiệp vụ, hỗ trợ CDI, AOP. Trong cả Spring và Java EE, bạn chỉ có thể sử dụng các phần mà bạn cần, nói cách khác bạn không phải sử dụng toàn bộ khung công tác. Bạn thậm chí có thể sử dụng chúng cùng nhau - chúng có thể tương thích với nhau. Nhờ vào việc giới thiệu các thùng chứa có thể nhúng được, bây giờ bạn thậm chí có thể sử dụng các tính năng Java EE mà bạn cần trong các lĩnh vực như ứng dụng trên máy tính để bàn mà theo truyền thống là lĩnh vực của Spring.

Nhưng một lĩnh vực mà Java EE vẫn thiếu sau mùa xuân là khả năng kiểm tra thoải mái. Nó không phải là dễ dàng để viết đơn vị kiểm tra cho EJB - cho điều này bạn phải sử dụng một khung bên thứ ba đặc biệt (Arquillian) và viết một số mã boilerplate bên trong các bài kiểm tra của bạn (ví dụ như để xây dựng gói triển khai thử nghiệm và triển khai nó vào container, vv .). Trong thực tế, Java EE thiếu bất kỳ hỗ trợ nào để kiểm tra EJB ra khỏi hộp. Ngược lại, Spring là xây dựng với testability và TDD trong tâm trí. Kiểm tra Spring bean là dễ dàng vì Spring bao gồm hỗ trợ kèm theo cho cả hai thử nghiệm (kiểm tra đơn vị, kiểm thử tích hợp) của tất cả các phần của ứng dụng cũng như chế nhạo.

+0

cảm ơn câu trả lời của bạn, nó rất hữu ích – Informatique2015

+1

Câu trả lời hay . Đôi khi có vẻ như mọi người đều hỏi câu hỏi "mùa xuân hay ejb" khét tiếng, nó kết thúc trong một số cuộc thảo luận tôn giáo không có căn cứ –

Các vấn đề liên quan