Post

Tổng quan Spring Framework

Bấy lâu nay chúng ta đã cùng nhau tìm hiểu sơ lượt về các vấn đề cơ bản của Java Web, từ Java Core đến JSP, Servlet và các Database Connection.

Và giờ đây là lúc chúng ta bắt tay vào tìm hiểu các Framework phổ biến mà Java đang hỗ trợ để đáp ứng nhu cầu và xu hướng của công nghệ hiện nay.

Một trong những Java Framework mà mình muốn giới thiệu trong Series này là Spring. Hãy cùng nhau theo dõi hết nhé !!!

1. Spring Frame là gì?

Vào năm 2002, Spring Framework phát hành phiên bản đầu tiên bởi Rod Johnson. Việc xây dựng các ứng dụng doanh nghiệp trở nên đơn giản và dễ dàng hơn. Rod Johnson đã cho xuất bản một cuốn sách được phổ biến rộng rãi có nhan đề “J2EE Development without EJB”. Điều này đã cho Spring Framework rất nhiều động lực để thay thế EJB.

Theo đà phát triển đó, Spring đã trở thành Framework mã nguồn mở phổ biến nhất để xây dựng các ứng dụng doanh nghiệp. Cách tiếp cận thực tế ban đầu của Rod Johnson tiếp tục được phát triển và hướng tới một bộ công cụ hoàn chỉnh dành cho xây dựng các ứng dụng doanh nghiệp. Theo một số nguồn, trên 50% các ứng dụng Java Web hiện nay đang sử dụng Spring.

Để ngăn chặn sự phức tạp trong phát triển các ứng dụng, Spring Framework thường dựa trên các quan điểm như sau:

  • Đơn giản hóa công việc phát triển thông qua việc sử dụng các POJO (Plain Old Java Object)
  • Nới lỏng ràng buộc giữa các thành phần thông qua việc sử dụng Dependency Injection
  • Giảm thiểu các mã boilerplate thông qua việc sử dụng Template và Aspect …

2. Kiến trúc Spring

Spring là lựa chọn có thể làm hài lòng và đáp ứng được các yêu cầu cho ứng dụng của bạn. Spring Framework cung cấp trên dưới 20 module có thể sử dụng trên nhiều ứng dụng khác nhau, việc của bạn là chọn module nào cho phù hợp.

Hình dưới đây mô tả kiến trúc tổng thể của một Spring Framework:

Spring Framework

Trong đó, ta có thể tham khảo qua một số khái niệm cơ bản ở các tầng như:

  • Test: Tầng này cung cấp khả năng hỗ trợ kiểm thử với JUnit và TestNG.

  • Spring Core Container: Bao gồm các module spring core, beans, context và expression languate (EL)
    • Spring core, bean cung cấp tính năng IOC và Dependency Injection.
    • Spring Context hỗ trợ đa ngôn ngữ (internationalization) với các tính năng Java EE như EJB, JMX.
    • Expression Language được mở rộng từ Expresion Language trong JSP. Nó cung cấp hỗ trợ việc setting/getting giá trị, các method cải tiến cho phép truy cập collections, index, các toán tử logic…
  • AOP, Aspects và Instrumentation: Những module này hỗ trợ cài đặt lập trình hướng khía cạnh (Aspect Oriented Programming), hỗ trợ tích hợp với AspectJ.

  • Data Access / Integration: Lớp Data Access/Integration bao gồm các module JDBC, ORM, OXM, JMS và Transaction có chi tiết như sau:
    • Module JDBC cung cấp một lớp JDBC abstraction loại bỏ sự cần thiết phải viết code liên quan đến JDBC.
    • Module ORM cung cấp các lớp tích hợp cho các quan hệ ánh xạ API phổ biến bao gồm JPA, JDO, Hibernate và iBatis.
    • Module OXM cung cấp một lớp trừu tượng hỗ trợ triển khai ánh xạ Object/XML cho JAXB, Castor, XMLBeans, JiBX và XStream.
    • Module JMS chứa các tính năng để tạo và gửi tin nhắn.
    • Module Transaction hỗ trợ quản lý giao dịch và khai báo cho các lớp triển khai các giao diện đặc biệt cho tất cả các POJO.
  • Web:
    • Module Web cung cấp các tính năng tích hợp web-oriented cơ bản như chức năng tải file, khởi tạo IoC container bằng servlet listener và ngữ cảnh ứng dụng web-oriented.
    • Module Web-MVC bao gồm triển khai Model-View-Controller (MVC) của Spring cho các ứng dụng web.
    • Module Web-Socket cung cấp hỗ trợ cho giao tiếp hai chiều dựa trên WebSocket giữa máy khách và máy chủ trong các ứng dụng web.
    • Module Web-Portlet cung cấp triển khai MVC được sử dụng trong môi trường portlet và phản ánh chức năng của module Web-Servlet.

3. Lợi ích của Spring

Sau đây là danh sách một số lợi ích tuyệt vời của việc sử dụng Spring Framework:

  • Spring cho phép các lập trình viên phát triển các ứng dụng cấp doanh nghiệp bằng cách sử dụng POJO. Lợi ích của việc chỉ sử dụng POJO là bạn không cần EJB container product, chẳng hạn như máy chủ ứng dụng nhưng bạn có tùy chọn chỉ sử dụng Servlet container mạnh mẽ như Tomcat hoặc một số sản phẩm thương mại.
  • Spring được tổ chức theo kiểu module. Mặc dù số lượng package và class là đáng kể nhưng bạn chỉ cần quan tâm đến những package và class bạn cần và bỏ qua phần còn lại.
  • Spring sử dụng một số công nghệ hiện có như một số ORM Framework, ogging Frameworks, JEE, Quartz, JDK timer và các công nghệ khác.
  • Việc kiểm tra một ứng dụng được viết bằng Spring rất đơn giản vì code phụ thuộc vào môi trường được chuyển vào Framework này. Hơn nữa, bằng cách sử dụng JavaBeanstyle POJOs, việc sử dụng dependency injection để thử nghiệm dữ liệu trở nên dễ dàng hơn.
  • Spring’s web Framework là một web MVC Framework được thiết kế tốt, cung cấp một giải pháp thay thế tuyệt vời cho các Web Framework như Struts hoặc các Web Framework được thiết kế quá mức hoặc ít phổ biến hơn.
  • Spring cung cấp một API thuận tiện để biến các ngoại lệ dành riêng cho công nghệ (ví dụ như JDBC, Hibernate hoặc JDO) thành các ngoại lệ nhất quán, không cần kiểm tra. Các IoC container có xu hướng nhẹ, đặc biệt là khi so sánh với các EJB container. Điều này có lợi cho việc phát triển và triển khai các ứng dụng trên máy tính có bộ nhớ và tài nguyên CPU hạn chế.
  • Spring cung cấp một giao diện quản lý giao dịch nhất quán, có thể giảm quy mô xuống giao dịch cục bộ (ví dụ - sử dụng một cơ sở dữ liệu duy nhất) và mở rộng quy mô lên các giao dịch toàn cầu (ví dụ - sử dụng JTA).

Với các tính năng mà Spring mang lại – thực sự là lựa chọn tuyệt vời cho các dự án phát triển phần mềm, đặc biệt là với những tín đồ Java và các doanh nghiệp lớn nhỏ có nhu cầu. Nếu bạn muốn tiến sâu hơn trong con đường nghề nghiệp và gắn bó lâu dài với Java thì Spring là Framework mà bạn không cần cân nhắc cũng phải lựa chọn ngay, càng sớm càng tốt.

Bài viết mang tính chất “ghi chú, lưu trữ, chia sẻ và phi lợi nhuận”.
Nếu bạn thấy hữu ích, đừng quên chia sẻ với bạn bè và đồng nghiệp của mình nhé!

Happy coding! 😎 👍🏻 🚀 🔥

Đọc thêm:

This post is licensed under CC BY 4.0 by the author.