JavaRush /Blog Java /Random-VI /Những điều bạn cần biết về Spring: lịch sử, các module ch...

Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE

Xuất bản trong nhóm
Xin chào! Hiện tại, hướng phát triển phổ biến nhất đối với nhà phát triển có kiến ​​thức về Java là phát triển web. Tất nhiên, đối với chuyên ngành này, có một danh sách các công nghệ cần phải nghiên cứu. Một trong những cái chính là Spring . Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE - 1Bạn có thể lập luận rằng thay vào đó bạn có thể học Java EE . Tất nhiên, điều này là đúng, nhưng hiện nay phần lớn các dự án mới đều sử dụng Spring , điều này đã khiến nó gần như trở thành công nghệ bắt buộc, mặc định đối với nhà phát triển web Java. Và nếu bạn muốn theo kịp nhu cầu của thị trường, bạn sẽ phải nghiên cứu nó. Hôm nay tôi muốn nói về Spring , cụ thể là để mở rộng tầm nhìn của bạn về nó một chút: nói về lịch sử hình thành của nó, những điểm khác biệt chính so với ngăn xếp Java EE và đưa ra một cái nhìn tổng quan ngắn gọn về các thành phần chính của ngăn xếp Spring . Bắt đầu nào! Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE - 2

1. Mùa xuân xuất hiện như thế nào và khi nào và nó phát triển như thế nào theo thời gian

Mọi chuyện bắt đầu vào tháng 10 năm 2002 , khi Rod Johnson viết cuốn sách “Chuyên gia thiết kế và phát triển J2EE một chọi một”: Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE - 3Trong cuốn sách này, do Wrox xuất bản , tác giả mô tả tình trạng phát triển Java của doanh nghiệp vào thời điểm đó và chỉ ra một số những thiếu sót của Java EE và môi trường (Enterprise Java Bean)EJB . Đồng thời, Rod Johnson đề xuất một giải pháp đơn giản hơn dựa trên các lớp Java thông thường (POJO - các đối tượng Java cũ đơn giản) và chèn phụ thuộc. Trong cuốn sách, anh ấy giải thích cách bạn có thể tạo một ứng dụng đặt chỗ trực tuyến chất lượng cao, có thể mở rộng mà không cần sử dụng EJB. Những thứ kia. ông đã trình bày rõ ràng cách loại bỏ sự phức tạp trong phát triển ứng dụng và làm cho việc sử dụng JavaBeans đơn giản có thể đạt được mọi thứ mà trước đây chỉ có thể thực hiện được khi sử dụng EJB. Tuy nhiên, phạm vi của Spring không giới hạn ở việc phát triển các thành phần phần mềm chạy phía máy chủ. Bất kỳ ứng dụng Java nào cũng có thể tận dụng các ưu điểm của khung công tác về tính đơn giản, khả năng kiểm tra và khả năng kết nối lỏng lẻo. Thiết kế phát triển J2EE của ông đã trở thành một cú hit ngay lập tức. Phần lớn mã ứng dụng, được cung cấp miễn phí như một phần của cuốn sách, có thể tái sử dụng được và một số nhà phát triển đã sớm bắt đầu sử dụng nó trong các dự án của họ. Wrox có một trang web cho cuốn sách với mã nguồn và các bản vá lỗi. Họ cũng cung cấp một diễn đàn trực tuyến cho cuốn sách. Vào tháng 2 năm 2003, các nhà phát triển Jürgen Heller và Jann Karoff đã thuyết phục Rod Johnson tạo ra một dự án nguồn mở dựa trên mã của khung công tác. Kể từ thời điểm đó, Rod, Jurgen và Yann bắt đầu hợp tác để tạo ra thứ gì đó hoàn toàn mới. Trên thực tế, chính Yann Karoff là người đã nghĩ ra cái tên “Mùa xuân” cho khuôn khổ mới. Điều muốn nói ở đây là Mùa xuân cũng giống như mùa xuân: một khởi đầu mới sau “mùa đông” của J2EE truyền thống.
  • Vào tháng 6 năm 2003, Spring 0.9 được phát hành theo giấy phép Apache 2.0.
  • Mùa xuân 1.0 được phát hành vào tháng 3 năm 2004. Điều thú vị là ngay cả trước khi phát hành Spring 1.0, phiên bản 0.9 trước đó đã được đón nhận rất nồng nhiệt và được áp dụng rộng rãi.
  • Vào tháng 8 năm 2004, Rod Johnson, Jürgen Heller, Keith Donald và Colin Sampaleanu đồng sáng lập Interface21 , một công ty tư vấn, đào tạo và hỗ trợ Spring.
  • Tháng 10 năm 2006: Spring 2.0 được phát hành, giúp đơn giản hóa các tệp cấu hình XML.
  • Spring 2.5, phát hành vào tháng 11 năm 2007, đã giới thiệu các cấu hình chú thích.
  • Spring 3.2, được phát hành vào tháng 12 năm 2012, đã giới thiệu cấu hình Java, hỗ trợ Java 7, Hibernate 4, Servlet 3.0 và cũng yêu cầu ít nhất Java 1.5.
  • Yann Karoff rời đội từ rất sớm. Rod Johnson rời đội mùa xuân vào năm 2012. Jürgen Heller vẫn là thành viên tích cực của nhóm phát triển Spring.
  • Spring 4.0, phát hành năm 2014, đã thêm hỗ trợ cho Java 8.
  • Cũng trong năm 2014, Spring Boot được giới thiệu ra thế giới.
  • Mùa xuân 5.0 được phát hành vào năm 2017. Giống như Spring Boot 2.x, hỗ trợ Spring 5.
  • Trên thực tế, đây là cách mà framework yêu thích của chúng tôi trở thành như chúng ta biết hiện nay.

2. Mùa xuân và Java EE

Chúng ta hãy làm một so sánh nhỏ về hai ngăn xếp Java chính dành cho các nhà phát triển web: SpringJava EE. Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE - 4
Java EE
Thuận lợi sai sót
  • Các ứng dụng viết bằng Java EE được coi là đáng tin cậy, an toàn và có khả năng mở rộng hơn
  • Java EE là một tiêu chuẩn API được ngành phê duyệt
  • Chủ yếu dựa trên các chú thích và CDI (bổ sung ngữ cảnh và phụ thuộc), giống như Spring
  • Triển khai dựa trên các thùng chứa EJB và POJO
  • Các ứng dụng phức tạp với số lượng giao dịch lớn được JEE xử lý rất tốt
  • Sử dụng thành công cho ứng dụng nguyên khối có thể mở rộng
  • Java EE có ngôn ngữ OOP riêng chứa một kiểu và cú pháp cụ thể
  • Một môi trường phát triển ứng dụng rất phức tạp, khó hiểu đối với người mới bắt đầu (và đôi khi đối với người già)
  • Chi phí cuối cùng của dự án, bao gồm thiết kế, triển khai và phát triển ứng dụng, có thể rất cao.
Java EE, được cấp phép bởi Oracle, được thiết kế cho các tổ chức và công ty yêu cầu môi trường có khả năng thích ứng rộng rãi, có thể phân phối để xây dựng các ứng dụng cho thị trường đại chúng. Giống như Spring, Java EE bao gồm các thư viện bổ sung để truy cập cơ sở dữ liệu (JDBC, JPA), gọi kỹ thuật từ xa (RMI), thông tin (JMS), quản trị web, xử lý XML và mô tả các API tiêu chuẩn cho JavaBeans doanh nghiệp, portlets, Servlets, Java Server Pages, v.v. Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE - 5Mục tiêu cơ bản của Java EE là làm sáng tỏ các vấn đề chính mà các nhà phát triển gặp phải liên quan đến việc xây dựng các ứng dụng hiện tại bằng các API khác nhau. Đồng thời, quá trình phát triển trong Java EE có mức độ phức tạp cao, điều này nâng cao tiêu chuẩn không chỉ đối với người mới bắt đầu. Và các chuyên gia có kinh nghiệm có thể khó hiểu chức năng đã được viết sẵn, do đó, việc phát triển trong Java EE mất nhiều thời gian hơn và do đó, đắt hơn. Về Java EE một cách ngắn gọn có thể nói thế này: Phức tạp nhưng linh hoạt. Bây giờ hãy nói một chút về Spring . Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE - 6
Mùa xuân
Thuận lợi sai sót
  • Cho phép bạn tổ chức hiệu quả các tương tác đối tượng
  • Đơn giản hơn Java EE
  • Được triển khai trên cơ sở IOCAOP , đảm bảo sự liên kết lỏng lẻo của các ứng dụng
  • Hoạt động dựa trên cấu hình XML, Groovy hoặc chú thích
  • Cho phép bạn sử dụng các đối tượng Java cũ đơn giản - POJO, nhà phát triển không cần vùng chứa doanh nghiệp như máy chủ ứng dụng
  • Cung cấp cho các nhà phát triển Java mức độ mô đun hóa cao
  • Cung cấp việc triển khai các thư viện Java EE, nhưng theo cách riêng của nó, giúp việc sử dụng chúng dễ dàng hơn nhiều
  • Giấy phép nguồn mở
  • Spring Boot đơn giản hóa đáng kể việc thiết lập ứng dụng ban đầu
  • Mã ứng dụng mùa xuân thường dễ kiểm tra
  • Mùa xuân tương đối khó phát triển vì thiếu sự tập trung rõ ràng
  • Đối với một nhà phát triển Java mới, việc học Spring framework có thể là một thách thức (nhưng vẫn dễ hơn Java EE)
  • Mùa xuân chậm hơn Java EE
Spring là một framework Java mã nguồn mở dành cho các doanh nghiệp lớn. Khung công tác Spring nhằm mục đích cung cấp cách triển khai đơn giản nhất có thể các ý tưởng J2EE và thúc đẩy các phương pháp lập trình xuất sắc bằng cách mở rộng khả năng của mô hình lập trình dựa trên POJO. Những thứ kia. Java EE giống một tiêu chuẩn chính thức hơn, trong khi Spring giống một framework thực hiện tiêu chuẩn này theo cách riêng của nó hơn.

Kết quả so sánh

Theo hiểu biết của tôi, Java EE và Spring giống như JDBC và Hibernate, trong đó JDBC là công nghệ nhanh hơn nhưng đồng thời có rất nhiều mã không cần thiết. Và Hibernate đã sử dụng JDBC, nhưng đồng thời đơn giản hóa và giảm thiểu đáng kể sự phát triển (mặc dù áp đặt một số hạn chế). Không thể nói chắc chắn cái nào trong số chúng tốt hơn. Điều này cũng phần nào gợi nhớ đến câu hỏi: cái nào tốt hơn - ArrayList hay LinkedList. Rốt cuộc, câu trả lời sẽ giống nhau - tùy thuộc vào tình huống. Mỗi người trong số họ đều có điểm mạnh và điểm yếu riêng, và bạn cần phải lựa chọn cẩn thận, cân nhắc tình huống của mình và hiểu xem điều gì trong số họ sẽ mang lại nhiều lợi ích nhất lúc này. Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE - 7

3. Thành phần lò xo

Bây giờ chúng ta hãy nói một chút về các framework tạo nên Spring.

Khung mùa xuân

Đây là mô-đun cốt lõi cung cấp mô hình lập trình và cấu hình toàn diện cho các ứng dụng doanh nghiệp dựa trên Java hiện đại—trên mọi nền tảng triển khai. Nó chứa nhiều công nghệ Spring cốt lõi (cốt lõi) :
  • chức năng cốt lõi - cơ bản triển khai các khái niệm IoC (đảo ngược điều khiển) và DI (nội xạ phụ thuộc) ;
  • AOP - Lập trình hướng theo khía cạnh - lập trình hướng theo khía cạnh nhằm thực hiện logic từ đầu đến cuối;
  • MVCWebFlux - các framework tương tác trên web;
  • JDBC , ORM - công nghệ tương tác với cơ sở dữ liệu;
  • Kiểm tra - chức năng kiểm tra dữ liệu vùng chứa Spring một cách minh bạch, không phức tạp;
  • SpEL - Ngôn ngữ biểu thức mùa xuân - Ngôn ngữ biểu thức mùa xuân;
  • vân vân.

Khởi động mùa xuân

Đơn giản hóa việc tạo các ứng dụng dựa trên Spring bằng cách giảm thiểu việc thiết lập ứng dụng ban đầu và tự động định cấu hình các thành phần ứng dụng Spring. Ví dụ về khởi động Spring boot sau 5 phút

Dữ liệu mùa xuân

Đơn giản hóa đáng kể việc sử dụng các công nghệ truy cập dữ liệu, cơ sở dữ liệu quan hệ và phi quan hệ (loại bỏ mã lặp đi lặp lại và đơn giản hóa việc tương tác với dữ liệu). Bài viết này chứa một hướng dẫn hay về cách kết nối Spring Data.

Mây xuân

Nó được sử dụng trong kiến ​​trúc microservice, đơn giản hóa sự tương tác giữa các microservice với nhau và tự động hóa việc triển khai các ứng dụng trên nền tảng đám mây như AWS , Azure , v.v. Xem hướng dẫn chi tiết về Spring Cloud tại đây , nhưng tôi sẽ cảnh báo bạn rằng chủ đề này không hề dễ dàng và nhắm đến các chuyên gia gần với trình độ cao cấp.

An ninh mùa xuân

Cung cấp công cụ xác thực (xác thực) và kiểm soát truy cập (ủy quyền) mạnh mẽ và có thể tùy chỉnh cho một ứng dụng. Bạn có thể tìm thấy một ví dụ đơn giản về kết nối Spring Security với ứng dụng của mình trong bài đăng này . Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE - 8

Đồ thị mùa xuân

Mô-đun này cung cấp hỗ trợ cho các ứng dụng Spring được xây dựng trên GraphQL Java. GraphQL là ngôn ngữ truy vấn dành cho API cho phép khách hàng truy vấn một tập dữ liệu giới hạn mà họ cần, từ đó cho phép thu thập dữ liệu trong một số lượng truy vấn giới hạn. Nếu bạn đã quen thuộc với JPA, bạn có thể đã gặp EntityGraph, với một khái niệm tương tự (hoặc giống nhau). Bạn có thể đọc thêm về GraphQL tại đây .

Phiên mùa xuân

Phần này của Spring framework cung cấp các API và cách triển khai để quản lý thông tin phiên của người dùng (dữ liệu phiên của người dùng được lưu trữ trong bộ lưu trữ liên tục như Redis , MongoDb , HazelCast , v.v.). Một ví dụ về việc sử dụng Spring Session có thể được tìm thấy ở đây .

Tích hợp mùa xuân

Mô-đun này được thiết kế để đơn giản hóa việc nhắn tin trong các ứng dụng dựa trên Spring và hỗ trợ tích hợp với các hệ thống bên ngoài thông qua bộ điều hợp khai báo. Các bộ điều hợp này cung cấp mức độ trừu tượng cao hơn khả năng hỗ trợ từ xa, nhắn tin và lập lịch của Spring. Bài viết chi tiết .

nghỉ xuân

Cung cấp một bộ công cụ phong phú giúp đơn giản hóa việc phát triển API REST: các công cụ định tuyến yêu cầu, để chuyển đổi JSON/XML thành các đối tượng thuộc các loại được yêu cầu, v.v. Bạn có thể tìm thấy ví dụ về dịch vụ RESTful trong Spring trong tài liệu này .

Luồng web mùa xuân

Spring Web Flow dựa trên Spring MVC và cho phép bạn triển khai các "luồng" của ứng dụng web. Các luồng như vậy gói gọn một chuỗi các bước hướng dẫn người dùng hoàn thành một số nhiệm vụ kinh doanh. Chúng trải rộng trên nhiều yêu cầu HTTP, có trạng thái, hoạt động với dữ liệu giao dịch, có thể tái sử dụng và có thể linh hoạt và bền vững về bản chất. Bạn có thể xem ví dụ về kết nối Spring Web Flow trong hướng dẫn này bằng tiếng Anh .

Dịch vụ web mùa xuân

Mô-đun này được thiết kế để giúp phát triển các dịch vụ SOAP dựa trên hợp đồng dễ dàng hơn bằng cách cho phép bạn tạo các dịch vụ web linh hoạt bằng một trong nhiều cách để thao tác các tải trọng XML. SOAP - Giao thức truy cập đối tượng đơn giản - Một giao thức đơn giản để truy cập các đối tượng.

mùa xuân HATEOAS

Mô-đun này cung cấp một số API để giúp việc tạo các bộ điều khiển REST tuân theo nguyên tắc HATEOAS dễ dàng hơn khi làm việc với Spring và đặc biệt là Spring MVC. HATEOAS - Hypermedia là công cụ của trạng thái ứng dụng - Hypermedia là công cụ của trạng thái ứng dụng. Bạn có thể xem công dụng của thư viện Spring này tại đây .

Lô mùa xuân

Mô-đun này cung cấp chức năng xử lý dữ liệu hàng loạt (khi dữ liệu được xử lý theo từng đợt lớn), rất quan trọng đối với hoạt động hàng ngày của hệ thống công ty. Spring Batch cung cấp các tính năng có thể tái sử dụng cần thiết để xử lý khối lượng lớn bản ghi, bao gồm ghi nhật ký/theo dõi, quản lý giao dịch, thống kê xử lý công việc, khởi động lại công việc, bỏ qua và quản lý tài nguyên. Bạn có thể tìm thấy một bài đánh giá thú vị về Spring Batch tại liên kết này .

AMQP mùa xuân

Mô-đun này áp dụng các khái niệm cốt lõi của Spring để phát triển các giải pháp nhắn tin dựa trên AMQP. Nó cung cấp một mẫu dưới dạng trừu tượng hóa cấp cao để gửi và nhận tin nhắn. Nó cũng cung cấp hỗ trợ cho các POJO dựa trên thông báo với bộ chứa trình nghe. AMQP - Giao thức xếp hàng tin nhắn nâng cao - Giao thức xếp hàng tin nhắn nâng cao. Dự án bao gồm hai phần: spring-amqp là phần trừu tượng hóa cơ sở và spring-rabbit là phần triển khai cho RabbitMQ . Ví dụ với kết nối RabbitMQ sử dụng Spring Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE - 9

Mùa xuân cho Apache Kafka

Dự án này áp dụng các khái niệm cốt lõi của Spring để phát triển các giải pháp nhắn tin dựa trên Kafka . Một mẫu được cung cấp dưới dạng trừu tượng hóa cấp cao để gửi tin nhắn. Nó cũng cung cấp hỗ trợ cho các POJO dựa trên thông báo với các chú thích cần thiết và vùng chứa trình nghe. Ở đây có sự tương đồng rõ ràng với Spring AMQP, nhưng mô-đun này được điều chỉnh riêng cho Kafka. Bạn có thể xem ví dụ về kết nối Spring Kafka tại đây .

Spring CredHub

Cung cấp hỗ trợ phía máy khách để lưu trữ, truy xuất và xóa thông tin xác thực khỏi máy chủ CredHub chạy trên nền tảng Cloud Foundry . CredHub - Cung cấp API để lưu trữ, tạo, truy xuất và xóa các loại thông tin xác thực khác nhau một cách an toàn. Spring CredHub cung cấp liên kết Java cho API CredHub, giúp dễ dàng tích hợp các ứng dụng Spring với CredHub.

FLO mùa xuân

Đây là một thư viện JavaScript cung cấp một trình thiết kế trực quan có thể nhúng HTML5 đơn giản cho các đường dẫn và biểu đồ đơn giản để theo dõi dữ liệu truyền phát và hàng loạt. Bản demo của công nghệ này có trong video tại liên kết .

LDAP mùa xuân

Thư viện này đơn giản hóa các hoạt động LDAP và dựa trên Spring JdbcTemplate. Khung này cho phép tìm kiếm và đóng ngữ cảnh, xem kết quả, giá trị mã hóa/giải mã, bộ lọc và hơn thế nữa (được xây dựng trên các nguyên tắc giống như Spring Jdbc) Bạn có thể tìm thấy một ví dụ về triển khai Spring LDAP tại đây .

mùa xuân roo

Mô-đun này cung cấp công cụ RAD có thể tạo và quản lý ứng dụng dựa trên Spring của bạn. Mục tiêu của nó là cải thiện năng suất của các nhà phát triển Java. Nó không thể viết logic nghiệp vụ của ứng dụng của bạn, nhưng nó có thể xử lý các nội dung về cấu hình và cơ sở hạ tầng.

vỏ lò xo

Thư viện giúp bạn dễ dàng tạo một ứng dụng shell (còn được gọi là dòng lệnh) đầy đủ tính năng bằng cách dựa vào các lọ Spring Shell và thêm các lệnh của riêng bạn (dưới dạng các phương thức trong Spring Bean). Việc tạo một ứng dụng dòng lệnh có thể hữu ích, chẳng hạn như để tương tác với API REST của dự án của bạn hoặc để làm việc với nội dung tệp cục bộ. Đọc thêm ở đâyở đây .

Máy phát biểu mùa xuân

Mô-đun này cho phép các nhà phát triển ứng dụng sử dụng các khái niệm máy trạng thái với các ứng dụng Spring. Bạn có thể tìm thấy ví dụ chi tiết về cách sử dụng chức năng này tại đâytại đây .

Hầm mùa xuân

Spring Vault cung cấp các bản tóm tắt Spring quen thuộc và hỗ trợ phía máy khách để truy cập, lưu trữ và thu hồi các bí mật. Nó cung cấp cả tính trừu tượng ở cấp độ thấp và cấp độ cao để tương tác với Vault , giúp người dùng không phải lo lắng về cơ sở hạ tầng. Ví dụ về triển khai Spring Vault Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE - 10“Tôi có cần học tất cả những điều này không?” - bạn ngạc nhiên hỏi. Đừng sợ hãi! Cái này sai! Chính xác hơn thì không hoàn toàn như vậy. Đây là danh sách đầy đủ các công nghệ có sẵn trong Spring. Danh sách các công nghệ mà người mới bắt đầu cần biết khiêm tốn hơn nhiều:
  • Lõi lò xo
  • Khởi động mùa xuân
  • Web mùa xuân (MVC và REST)
  • Dữ liệu mùa xuân (Spring ORM, Spring JDBC, Spring JPA)
  • Kiểm tra mùa xuân
Ngoài ra còn có các công nghệ khác thường thấy trong các dự án, nhưng do tính phức tạp của chúng, chúng thường được xử lý bởi các nhà phát triển có kinh nghiệm hơn là những người mới làm quen với môi trường xanh. Tuy nhiên, nó cũng hữu ích cho những người mới bắt đầu ít nhất có hiểu biết chung về:
  • An ninh mùa xuân
  • AOP mùa xuân
  • Mây xuân
Các công nghệ khác được sử dụng ít thường xuyên hơn, vì vậy bạn chỉ cần nghiên cứu chúng một cách nghiêm túc để thực hiện một dự án cụ thể. Nhân tiện, bạn có thể tìm thấy danh sách kiểm tra đầy đủ về những điều mà nhà phát triển Java nên biết trong bài viết khác của tôi. Đó là tất cả đối với tôi ngày hôm nay, hẹn gặp lại tất cả các bạn sớm! Những điều bạn cần biết về Spring: lịch sử, các module chính, so sánh với Java EE - 11
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION