Nền tảng Kiến thức - Hành trang tới Tương lai
Card image

Chương 4-Bài 1. Giới thiệu về Spring

Tác giả: Dương Nguyễn Phú Cường #12065
Ngày đăng: 2 tháng trước
Lượt xem: 114

Spring Framework

Spring là một Framework phát triển các ứng dụng Java được sử dụng bởi hàng triệu lập trình viên. Nó giúp tạo các ứng dụng có hiệu năng cao, dễ kiểm thử, sử dụng lại code…

Spring nhẹ và trong suốt (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng 2MB; trong suốt: hoạt động một cách trong suốt với lập trình viên).

Spring là một mã nguồn mở, được phát triển, chia sẻ và có cộng đồng người dùng rất lớn.

Spring Framework được xây dựng dựa trên 2 nguyên tắc design chính là: Dependency Injection và Aspect Oriented Programming.

Những tính năng core (cốt lõi) của Spring có thể được sử dụng để phát triển Java Desktop, ứng dụng mobile, Java Web. Mục tiêu chính của Spring là giúp phát triển các ứng dụng J2EE một cách dễ dàng hơn dựa trên mô hình sử dụng POJO (Plain Old Java Object).

Kiến trúc và Module của Spring

Spring Framework, một công cụ mạnh mẽ cho lập trình Java, được tổ chức theo kiểu module để mang đến tính linh hoạt và dễ quản lý cho các dự án phức tạp. Dưới đây, chúng tôi sẽ giới thiệu một số khía cạnh quan trọng của kiến trúc và các module quan trọng của Spring.

Dependency Injection và Inversion of Control

Dependency Injection (DI) là một design pattern quan trọng trong Spring Framework, giúp loại bỏ sự phụ thuộc lẫn nhau giữa các thành phần của ứng dụng. Điều này làm cho việc quản lý, mở rộng mã nguồn và kiểm tra ứng dụng trở nên dễ dàng hơn.

Inversion of Control (IoC) Container trong Spring chịu trách nhiệm khởi tạo, cấu hình và kết nối các đối tượng. Spring cung cấp hai loại IoC containers: BeanFactory và ApplicationContext, giúp quản lý các đối tượng của bạn một cách thông minh.

Các Module Quan Trọng của Spring Framework

Spring Framework được chia thành khoảng 20 module, được tổ chức hợp lý để phục vụ các mục tiêu cụ thể. Dưới đây là một số module quan trọng:

Core Container

Core Container bao gồm các module: spring-corespring-beansspring-context, và spring-expression (Spring Expression Language).

  • spring-core và spring-beans cung cấp các phần cơ bản của framework, bao gồm IoC và Dependency InjectionSpring Bean được coi như linh hồn của ứng dụng Spring.
  • spring-context hỗ trợ đa ngôn ngữ (internationalization) và tích hợp các tính năng Java EE như EJB và JMX.
  • spring-expression cung cấp hỗ trợ cho việc đặt và lấy giá trị, toán tử logic và truy cập các tập hợp dữ liệu.

Data Access/Integration

Data Access/Integration bao gồm các module JDBC, ORM, OXM, JMS và Transaction.

  • spring-jdbc giúp giảm thiểu mã JDBC và hỗ trợ nhiều cơ sở dữ liệu.
  • spring-orm tích hợp với các orm API phổ biến như JPA, JDO và Hibernate.
  • spring-oxm hỗ trợ Object/XML mapping với nhiều công cụ như AXB, Castor, XMLBeans và nhiều công cụ khác.
  • spring-jms cung cấp khả năng tạo và sử dụng các message và tích hợp với spring-messaging.
  • spring-transaction hỗ trợ quản lý giao dịch cho các POJO và các lớp đặc biệt.

Web

Spring cung cấp Spring MVC để xây dựng ứng dụng web. Module bao gồm: spring-webspring-webmvcspring-websocket và springwebmvc-portlet.

  • spring-web hỗ trợ tích hợp web, chức năng tải tệp và khởi tạo IoC container sử dụng servlet.
  • spring-webmvc triển khai Model-View-Controller (MVC) cho ứng dụng web.
  • spring-websocket hỗ trợ WebSocket-based, giao tiếp hai chiều giữa client và server trong các ứng dụng web.
  • springwebmvc-portlet dành cho môi trường portlet và ánh xạ chức năng của module Web-Servlet.

AOP, Aspects, Instrumentation và Messaging

Những module này hỗ trợ lập trình hướng khía cạnh (Aspect Oriented Programming) và tích hợp với AspectJ.

  • Module AOP cung cấp lập trình hướng khía cạnh, cho phép tách rời mã và các chức năng của ứng dụng.
  • Module Aspects tích hợp với AspectJ, một khuôn khổ AOP mạnh mẽ.
  • Module Instrumentation hỗ trợ đo đạc và triển khai lớp bộ nạp.
  • Module Messaging hỗ trợ STOMP và WebSocket, cung cấp mô hình lập trình chú thích cho định tuyến và xử lý tin nhắn STOMP.

Spring Framework mang đến sự linh hoạt và tính mạnh mẽ cho lập trình Java, giúp bạn xây dựng ứng dụng hiệu quả và dễ bảo trì.

Hệ sinh thái của Spring Framework

Spring MVC

Spring MVC được thiết kế dành cho phát triển các ứng dụng web

Spring Security

Cung cấp các cơ chế xác thực và phân quyền cho ứng dụng của bạn

Spring Boot

Spring Boot là một framework giúp chúng ta phát triển cũng như chạy ứng dụng một cách nhanh chóng

Spring Data

Cung cấp mô hình lập trình dựa trên Spring quen thuộc và nhất quán để truy cập dữ liệu trong khi vẫn giữ được các đặc điểm đặc biệt của kho dữ liệu cơ bản.

Spring Batch

Dự án giúp chúng ta dễ dàng tạo các lịch trình và tiến trình cho các công việc xử lý theo mẻ

Spring Social

Dự án này sẽ kết nối ứng dụng của bạn với các API bên thứ ba của Facebook, Twitter, Linkedin, ... ví dụ như đăng nhập bằng google+ , facebook


Chương trình học


  1. Bức tranh tổng thể về Lập trình WEB 1
    1. Sơ đồ vận hành của một Website Java Spring #12095
  2. Cài đặt, setup môi trường lập trình Java Spring 4
    1. Cài đặt Postman #12064
    2. Cài đặt tool Lombok #11611
    3. Cài đặt web server XAMPP #84
    4. Cài đặt công cụ truy vấn database HeidiSQL #1833
  3. Tiêu chuẩn lập trình WEB 8
    1. Chuẩn dữ liệu JSON #12067
    2. Tiêu chuẩn mã lỗi khi giao tiếp giữa Client và Server trên nền web - HTTP Status Code #12077
    3. Tiêu chuẩn RESTful API là gì? #12066
    4. Kiến trúc MVC là gì? #65
    5. Mô hình kiến trúc MVC vận hành trong Java Spring Framework #12108
    6. Mô hình kiến trúc 3 lớp (Three layers) vận hành trong Java Spring MVC Framework #12118
    7. Mô hình Kiến trúc 3 lớp (three layers) phân chia DTO thành REQUEST / RESPONSE theo từng ngữ cảnh vận hành trong Java Spring MVC Framework #12261
    8. Mô hình kiến trúc 3 lớp (three layers) có kiểm tra ràng buộc dữ liệu (validation) vận hành trong Java Spring MVC Framework #12240
  4. Tổng quan về framework Spring Java 2
    1. Giới thiệu về Spring #12065
    2. Tạo chương trình Java Spring đầu tiên - Hello World #12090
  5. Phân tích nghiệp vụ, phân rã danh sách chức năng và thiết kế database 2
    1. Thiết kế Cơ sở dữ liệu Bán hàng TMĐT có quản lý Kho hàng, Nhập xuất, Tồn kho, Phân quyền, Khuyến mãi, Tin tức #12053
    2. Phân rã danh sách chức năng Web app TMĐT có quản lý Kho hàng, Nhập xuất, Tồn kho, Phân quyền, Khuyến mãi, Tin tức #12058
  6. Video khóa học 1
    1. Playlist khóa học Java Spring Framework trên Youtube #12114
  7. Dự án thực tế mẫu - Trang web app bán hàng có quản lý kho hàng NetaShop - Phân vùng giao diện Quản trị Admin 26
    1. Thiết kế bố cục (layouts) cho phân vùng giao diện Quản trị Admin (Backend) #12124
    2. Thiết kế giao diện trang tổng quan (Dashboard) cho phân vùng giao diện Quản trị Admin (Backend) #12127
    3. Thiết kế giao diện trang danh sách chuyên mục sản phẩm (Shop categories - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12130
    4. Thiết kế giao diện trang thêm mới chuyên mục sản phẩm (Shop categories - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12133
    5. Thiết kế giao diện trang cập nhật chuyên mục sản phẩm (Shop categories - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12137
    6. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa chuyên mục sản phẩm (Shop categories - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12134
    7. Thiết kế giao diện trang danh sách nhà cung cấp (Shop suppliers - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12142
    8. Thiết kế giao diện trang thêm mới nhà cung cấp (Shop suppliers - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12147
    9. Thiết kế giao diện trang cập nhật nhà cung cấp (Shop suppliers - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12148
    10. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa nhà cung cấp (Shop suppliers - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12149
    11. Thiết kế giao diện trang danh sách sản phẩm (Shop products - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12156
    12. Thiết kế giao diện trang thêm mới sản phẩm (Shop products - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12157
    13. Thiết kế giao diện trang cập nhật sản phẩm (Shop products - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12158
    14. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa sản phẩm (Shop products - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12159
    15. Thiết kế giao diện trang danh sách sản phẩm khuyến mãi, giảm giá (Shop product discounts - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12180
    16. Thiết kế giao diện trang thêm mới sản phẩm khuyến mãi, giảm giá (Shop product discounts - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12181
    17. Thiết kế giao diện trang cập nhật sản phẩm khuyến mãi, giảm giá (Shop product discounts - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12182
    18. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa sản phẩm khuyến mãi, giảm giá (Shop product discounts - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12183
    19. Thiết kế giao diện trang danh sách kho hàng (Shop stores - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12184
    20. Thiết kế giao diện trang thêm mới kho hàng (Shop stores - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12185
    21. Thiết kế giao diện trang cập nhật kho hàng (Shop stores - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12186
    22. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa kho hàng (Shop stores - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12187
    23. Thiết kế giao diện trang danh sách phiếu nhập kho (Shop imports - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12188
    24. Thiết kế giao diện trang thêm mới phiếu nhập kho (Shop imports - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12189
    25. Thiết kế giao diện trang cập nhật phiếu nhập kho (Shop imports - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12190
    26. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa phiếu nhập kho (Shop imports - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12191
Các bài học

Chương trình học

Bao gồm Module, Chương, Bài học, Bài tập, Kiểm tra...

Chương trình học


  1. Bức tranh tổng thể về Lập trình WEB 1
    1. Sơ đồ vận hành của một Website Java Spring #12095
  2. Cài đặt, setup môi trường lập trình Java Spring 4
    1. Cài đặt Postman #12064
    2. Cài đặt tool Lombok #11611
    3. Cài đặt web server XAMPP #84
    4. Cài đặt công cụ truy vấn database HeidiSQL #1833
  3. Tiêu chuẩn lập trình WEB 8
    1. Chuẩn dữ liệu JSON #12067
    2. Tiêu chuẩn mã lỗi khi giao tiếp giữa Client và Server trên nền web - HTTP Status Code #12077
    3. Tiêu chuẩn RESTful API là gì? #12066
    4. Kiến trúc MVC là gì? #65
    5. Mô hình kiến trúc MVC vận hành trong Java Spring Framework #12108
    6. Mô hình kiến trúc 3 lớp (Three layers) vận hành trong Java Spring MVC Framework #12118
    7. Mô hình Kiến trúc 3 lớp (three layers) phân chia DTO thành REQUEST / RESPONSE theo từng ngữ cảnh vận hành trong Java Spring MVC Framework #12261
    8. Mô hình kiến trúc 3 lớp (three layers) có kiểm tra ràng buộc dữ liệu (validation) vận hành trong Java Spring MVC Framework #12240
  4. Tổng quan về framework Spring Java 2
    1. Giới thiệu về Spring #12065
    2. Tạo chương trình Java Spring đầu tiên - Hello World #12090
  5. Phân tích nghiệp vụ, phân rã danh sách chức năng và thiết kế database 2
    1. Thiết kế Cơ sở dữ liệu Bán hàng TMĐT có quản lý Kho hàng, Nhập xuất, Tồn kho, Phân quyền, Khuyến mãi, Tin tức #12053
    2. Phân rã danh sách chức năng Web app TMĐT có quản lý Kho hàng, Nhập xuất, Tồn kho, Phân quyền, Khuyến mãi, Tin tức #12058
  6. Video khóa học 1
    1. Playlist khóa học Java Spring Framework trên Youtube #12114
  7. Dự án thực tế mẫu - Trang web app bán hàng có quản lý kho hàng NetaShop - Phân vùng giao diện Quản trị Admin 26
    1. Thiết kế bố cục (layouts) cho phân vùng giao diện Quản trị Admin (Backend) #12124
    2. Thiết kế giao diện trang tổng quan (Dashboard) cho phân vùng giao diện Quản trị Admin (Backend) #12127
    3. Thiết kế giao diện trang danh sách chuyên mục sản phẩm (Shop categories - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12130
    4. Thiết kế giao diện trang thêm mới chuyên mục sản phẩm (Shop categories - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12133
    5. Thiết kế giao diện trang cập nhật chuyên mục sản phẩm (Shop categories - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12137
    6. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa chuyên mục sản phẩm (Shop categories - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12134
    7. Thiết kế giao diện trang danh sách nhà cung cấp (Shop suppliers - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12142
    8. Thiết kế giao diện trang thêm mới nhà cung cấp (Shop suppliers - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12147
    9. Thiết kế giao diện trang cập nhật nhà cung cấp (Shop suppliers - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12148
    10. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa nhà cung cấp (Shop suppliers - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12149
    11. Thiết kế giao diện trang danh sách sản phẩm (Shop products - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12156
    12. Thiết kế giao diện trang thêm mới sản phẩm (Shop products - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12157
    13. Thiết kế giao diện trang cập nhật sản phẩm (Shop products - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12158
    14. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa sản phẩm (Shop products - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12159
    15. Thiết kế giao diện trang danh sách sản phẩm khuyến mãi, giảm giá (Shop product discounts - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12180
    16. Thiết kế giao diện trang thêm mới sản phẩm khuyến mãi, giảm giá (Shop product discounts - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12181
    17. Thiết kế giao diện trang cập nhật sản phẩm khuyến mãi, giảm giá (Shop product discounts - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12182
    18. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa sản phẩm khuyến mãi, giảm giá (Shop product discounts - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12183
    19. Thiết kế giao diện trang danh sách kho hàng (Shop stores - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12184
    20. Thiết kế giao diện trang thêm mới kho hàng (Shop stores - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12185
    21. Thiết kế giao diện trang cập nhật kho hàng (Shop stores - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12186
    22. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa kho hàng (Shop stores - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12187
    23. Thiết kế giao diện trang danh sách phiếu nhập kho (Shop imports - INDEX) cho phân vùng giao diện Quản trị Admin (Backend) #12188
    24. Thiết kế giao diện trang thêm mới phiếu nhập kho (Shop imports - CREATE) cho phân vùng giao diện Quản trị Admin (Backend) #12189
    25. Thiết kế giao diện trang cập nhật phiếu nhập kho (Shop imports - EDIT) cho phân vùng giao diện Quản trị Admin (Backend) #12190
    26. Thiết kế giao diện trang hiển thị hộp thoại (dialog) cảnh báo xóa phiếu nhập kho (Shop imports - DELETE) cho phân vùng giao diện Quản trị Admin (Backend) #12191

Bài học trước Bài học tiếp theo