Hướng dẫn dành cho người mới bắt đầu sử dụng Spring Framework: Tính năng, kiến trúc và cách bắt đầu
08/04/2024 01:32
Trong bài viết này, chúng ta sẽ xem xét Spring framework và cách xây dựng các ứng dụng Java bằng cách sử dụng nó.
Vùng chứa IoC (Đảo ngược điều khiển)
Bộ chứa IoC là một trong những tính năng cốt lõi của Spring cung cấp một cách hợp lý để định cấu hình và quản lý các đối tượng Java. Bộ chứa này chịu trách nhiệm quản lý vòng đời của một đối tượng Java đã xác định, làm tăng đáng kể khả năng cấu hình của ứng dụng dựa trên Spring.
IoC sử dụng các mẫu tra cứu phụ thuộc hoặc nội xạ phụ thuộc để cung cấp tham chiếu đối tượng trong thời gian chạy. Vùng chứa bao gồm mã trình biên dịch mã được yêu cầu để quản lý cấu hình.
Spring cung cấp các gói org.springframework.beans và org.springframework.context có thể được sử dụng để hỗ trợ các chức năng này.
Hỗ trợ lập trình hướng theo khía cạnh
AOP nhằm mục đích cung cấp nhiều mô-đun hơn cho các mối quan tâm xuyên suốt, đó là các chức năng trải rộng trên ứng dụng, chẳng hạn như:
- Ghi nhật ký
- Bộ nhớ đệm
- Quản lý giao dịch
- Xác thực
- Vân vân.
Hơn nữa, AOP bổ sung cho lập trình hướng đối tượng bằng cách cung cấp một cách khác để cấu trúc chương trình, trong đó tính mô đun OOP dựa trên các lớp.
Trong AOP, đơn vị chính của tính mô đun là một khía cạnh (mối quan tâm xuyên suốt). Điều này cho phép người dùng sử dụng AOP để tạo các khía cạnh tùy chỉnh và dịch vụ doanh nghiệp khai báo. Bộ chứa IoC không phụ thuộc vào AOP, mang lại nhiều quyền tự do hơn cho các nhà phát triển trong việc lựa chọn phương pháp lập trình ưa thích của họ.
Tuy nhiên, Lập trình hướng theo khía cạnh kết hợp với Spring IoC cung cấp giải pháp phần mềm trung gian mạnh mẽ .
Khung truy cập dữ liệu
Sự cố giao tiếp cơ sở dữ liệu là một trong những vấn đề phổ biến mà các nhà phát triển gặp phải khi phát triển ứng dụng. Spring đơn giản hóa quá trình giao tiếp cơ sở dữ liệu bằng cách cung cấp hỗ trợ trực tiếp cho các khung truy cập dữ liệu phổ biến trong Java, chẳng hạn như JDBC, Hibernate, Java Persistence API (JPA), v.v.
Ngoài ra, nó còn cung cấp các tính năng như quản lý tài nguyên, xử lý ngoại lệ và gói tài nguyên cho tất cả các khung truy cập dữ liệu được hỗ trợ, giúp đơn giản hóa hơn nữa quá trình phát triển.
Khung quản lý giao dịch
Không giống như API giao dịch Java (JTA), Khung quản lý giao dịch spring không bị giới hạn ở các giao dịch toàn cầu và lồng nhau. Spring cung cấp một cơ chế trừu tượng hóa cho Java cho phép người dùng:
- Làm việc với các giao dịch cục bộ, toàn cầu và lồng nhau
- Lưu điểm
- Đơn giản hóa việc quản lý giao dịch trên ứng dụng
Khung truy cập dữ liệu Spring tích hợp trực tiếp với Khung quản lý giao dịch với sự hỗ trợ cho nhắn tin và bộ nhớ đệm. Điều này cho phép các nhà phát triển tạo ra các hệ thống giao dịch giàu tính năng trải rộng trên các ứng dụng mà không phụ thuộc vào EJB hoặc JTA.
Khung MVC spring
Spring MVC cho phép các nhà phát triển tạo ứng dụng bằng cách sử dụng mẫu MVC phổ biến. Đó là một khung dựa trên yêu cầu cho phép các nhà phát triển dễ dàng tạo các triển khai MVC tùy chỉnh phù hợp chính xác với nhu cầu của họ.
Thành phần cốt lõi của Spring MVC là lớp DispatcherServlet xử lý các yêu cầu của người dùng và sau đó chuyển tiếp chúng đến bộ điều khiển chính xác. Điều này cho phép bộ điều khiển xử lý yêu cầu, tạo mô hình và sau đó cung cấp thông tin cho người dùng cuối thông qua chế độ xem được chỉ định.
Dịch vụ web spring
Thành phần Spring Web Service này cung cấp một cách hợp lý để tạo và quản lý các điểm cuối dịch vụ web trong ứng dụng. Nó cung cấp một cách tiếp cận theo lớp có thể được quản lý bằng XML và có thể được sử dụng để cung cấp ánh xạ cho các yêu cầu web tới một đối tượng cụ thể.
Khung kiểm tra spring
Thử nghiệm là một phần cốt lõi của bất kỳ sự phát triển nào. Spring đơn giản hóa việc kiểm thử trong framework với các thành phần như:
- Đối tượng giả
- Khung TestContext
- Kiểm tra MVC spring
- Vân vân.
(Đọc về các khung tự động hóa thử nghiệm .)
Kiến trúc khung spring
Được rồi, chúng ta đã xem xét các tính năng cốt lõi giúp Spring trở thành một framework xuất sắc. Bây giờ chúng ta sẽ xem xét kiến trúc của Spring—kiến trúc hỗ trợ tất cả các tính năng này.
Sơ đồ trên thể hiện các thành phần cơ bản của kiến trúc Spring. Như bạn có thể thấy, Spring được xây dựng bằng các mô-đun khác nhau cho phép thực hiện các chức năng khác nhau.
thùng chứa lõi
Phần này chứa các mô-đun cơ bản là nền tảng của khung công tác Spring.
- Core (lõi lò xo) là cốt lõi của khung hỗ trợ các tính năng như Đảo ngược điều khiển và chèn phụ thuộc.
- Beans (spring-beans) cung cấp Beanfactory, đây là một triển khai phức tạp của mô hình nhà máy.
- Ngữ cảnh (bối cảnh spring) được xây dựng trên Core và Beans và cung cấp phương tiện để truy cập các đối tượng được xác định. Giao diện ApplicationContext là phần cốt lõi của mô-đun Ngữ cảnh và hỗ trợ bối cảnh spring cung cấp hỗ trợ cho các tương tác của bên thứ ba như bộ nhớ đệm, gửi thư và công cụ tạo mẫu.
- SpEL (biểu thức spring) cho phép người dùng sử dụng Ngôn ngữ biểu thức spring để truy vấn và thao tác với biểu đồ đối tượng trong thời gian chạy.
Truy cập/tích hợp dữ liệu
Điều này bao gồm các mô-đun được sử dụng để xử lý việc truy cập dữ liệu và xử lý giao dịch trong một ứng dụng.
- JDBC (spring-jdbc) cung cấp lớp trừu tượng JDBC giúp loại bỏ nhu cầu phân tách mã hóa JDBC khi xử lý cơ sở dữ liệu.
- ORM (spring-orm) là các lớp tích hợp cho API ánh xạ quan hệ đối tượng phổ biến như JPA, JDO Hibernate.
- OXM (spring-oxm) là lớp trừu tượng hỗ trợ triển khai ánh xạ Đối tượng/XML như JAXB, XStream.
- JMS (spring-jms) là mô-đun Dịch vụ nhắn tin Java tạo và sử dụng các tin nhắn tích hợp trực tiếp với mô-đun nhắn tin Spring.
- Giao dịch (spring-tx) cung cấp quản lý giao dịch theo chương trình và khai báo cho các lớp bao gồm các giao diện và POJO đặc biệt.
Web
Lớp Web liên quan đến các mô-đun hỗ trợ các chức năng dựa trên web trong Spring.
- WebSocket (spring-websocket) hỗ trợ giao tiếp dựa trên ổ cắm web cho máy khách và máy chủ.
- Servlet (spring-webmvc) là mô-đun Spring WebMVC chứa các triển khai MVC và REST.
- Web (spring-web) cung cấp tất cả các tính năng cơ bản hướng đến web và chứa ứng dụng khách HTTP cũng như các phần liên quan đến web của tính năng điều khiển từ xa Spring.
- Portlet (spring-webmvc-portlet) cung cấp triển khai MVC để sử dụng trong môi trường portlet.
Các mô-đun khác
- AOP (spring-aop) cung cấp triển khai lập trình hướng theo khía cạnh có thể được sử dụng khi tạo ứng dụng.
- Các khía cạnh (các khía cạnh spring) cho phép tích hợp trực tiếp với phần mở rộng lập trình AspectJ bằng nền tảng nhật thực.
- Instrumentation (spring-instrument) là hỗ trợ thiết bị đo lớp và triển khai trình nạp lớp cho các máy chủ ứng dụng.
- Nhắn tin (nhắn tin spring) cung cấp một nền tảng mạnh mẽ để quản lý nhắn tin trong ứng dụng.
- Test (spring-test) là module Spring test hỗ trợ kiểm thử đơn vị và tích hợp với JUnit và TestNG.
Bắt đầu với khung công tác Spring
Bây giờ chúng ta đã hiểu điều gì khiến Spring trở thành một framework thực sự tuyệt vời, hãy xem cách bắt đầu phát triển một dự án Spring.
Chúng tôi sẽ sử dụng môi trường Windows và Visual Studio Code làm IDE cho ví dụ sau. Đầu tiên, chúng ta cần cài đặt Java trên PC. Bạn có thể nhận các tệp nhị phân Java (OpenJDK) mã nguồn mở dựng sẵn mới nhất từ dự án Adoptium . Chúng tôi sẽ sử dụng bản phát hành LTS mới nhất tại thời điểm viết bài này là OpenJDK 17 (LTS).