SPRING BOOT
Cách sử dụng Spring Scheduled trong Spring Boot Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java Hướng dẫn Upload file với Spring Boot trong Java Hướng dẫn download file với Spring Boot trong Java Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java Spring Boot là gì? Tại sao sử dụng Spring Boot trong Java Cài đặt Spring Boot trong Java, code một project Spring Boot cơ bản RESTful API là gì? Cách hoạt động của RESTful API trong Spring Boot RESTful API hoạt động qua giao thức HTTP như thế nào? CRUD đơn giản với RESTful API trong Spring Boot Java Các thuộc tính của Spring Boot trong Java Hướng dẫn sử dụng Thymeleaf và Spring Boot trong Java Hướng dẫn sử dụng FreeMarker với Spring Boot trong Java Hướng dẫn sử dụng JSP và Spring Boot trong Java Cách dùng Logging trong Spring Boot Kiến trúc 3layer trong Spring Boot là gì? Cách hoạt động thế nào? Hướng dẫn sử dụng Apache Tiles với Spring Boot trong Java Sử dụng nhiều ViewResolver trong Spring Boot Java Giới thiệu về Spring Boot Actuator trong ứng dụng Spring Boot Cách dùng Spring JDBC trong ứng dụng Spring Boot Java Spring Data JPA trong Spring Boot là gì? Spring Data JPA có gì hay? Tương tác giữa Spring Boot, JPA và cơ sở dữ liệu H2 Cách dùng Spring Email trong Spring Boot Sử dụng @bean trong ứng dụng Spring Boot Cách chuyển HTTP sang HTTPS trong Spring Boot Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền Cách triển khai Spring Boot trên Tomcat Server Sử dụng JUnit để tạo unit test trong Spring Boot Cách test RESTful API trong Spring Boot Tạo ứng dụng Chat với Spring Boot và Websocket Tạo trang web đa ngôn ngữ với Spring Boot trong Java Sử dụng Twitter Bootstrap trong Spring Boot Hướng dẫn sử dụng Interceptor trong Spring Boot Cách tạo Restful Client bằng RestTemplate trong Spring Boot Cách dùng Spring Boot và MongoDB trong Java Cách dùng Spring Boot và Mustache trong Java Cách dùng Groovy trong Spring Boot Java
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Kiến trúc 3layer trong Spring Boot là gì? Cách hoạt động thế nào?

Tìm hiểu về kiến trúc 3 layer trong Spring Boot - một kiến trúc phổ biến được sử dụng trong nhiều dự án phát triển ứng dụng. Hy vọng bài viết sẽ giúp các lập trình viên có thể áp dụng kiến trúc này vào dự án của mình một cách hiệu quả và tối ưu nhất.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Kiến trúc 3 layer trong Spring Boot - một mô hình phát triển được sử dụng phổ biến trong các ứng dụng Java. Chúng ta sẽ tìm hiểu về ý nghĩa và nhiệm vụ của mỗi tầng, cách sử dụng các giao diện và lớp trung gian để tương tác giữa các tầng, cũng như lợi ích của việc sử dụng kiến trúc này trong phát triển ứng dụng.

1. Kiến trúc 3layer (Mô hình 3 lớp) là gì?

3layer jpg

Sơ đồ mô hình 3layer

Nếu bạn vẫn chưa hiểu rõ tại sao luồng đi của Spring Boot cần phải áp dụng các loại mô hình như là 3layer hay MVC thì mình sẽ giải thích thắc mắc đó bằng một cách dễ hiểu như sau: Có thể coi Spring Boot là một cái bánh chưng chẳng hạn, thì khi gói bánh bạn cần phải dùng một cái khuôn để bánh có một hình thù như là chiếc bánh chưng thì ở đây mô hình 3layer với Spring Book cũng như vậy, để có một ứng dụng Spring Boot đúng cấu trúc và đầy đủ thì chúng ta cần phải áp dụng các mô hình. Sau đây mình sẽ giải thích về mô hình 3layer:

Kiến trúc 3 layer, hay còn gọi là mô hình 3 lớp, là một kiến trúc phát triển phần mềm phổ biến trong lập trình ứng dụng. Kiến trúc này bao gồm 3 tầng (layer) logic được phân chia rõ ràng và độc lập với nhau:

Bài viết này được đăng tại [free tuts .net]

  • Presentation layer (tầng trình diễn): Là tầng giao diện người dùng, được sử dụng để hiển thị dữ liệu và tương tác với người dùng. Tầng này sử dụng các công nghệ như HTML, CSS, JavaScript, JSP, thư viện front-end như Angular hoặc React, và cung cấp các chức năng như xác thực người dùng, kiểm tra đầu vào và hiển thị dữ liệu.

  • Business Logic layer (tầng xử lý logic): Là tầng xử lý logic của ứng dụng, bao gồm các quy trình kinh doanh và tính năng của ứng dụng. Tầng này thực hiện các tác vụ xử lý dữ liệu, xử lý nghiệp vụ, xử lý lỗi, và tạo ra các kết quả phù hợp. Tầng này sử dụng các công nghệ Java, như Spring Boot, để triển khai logic của ứng dụng.

  • Data Access layer (tầng truy cập dữ liệu): Là tầng truy cập cơ sở dữ liệu, được sử dụng để lưu trữ và truy xuất dữ liệu. Tầng này sử dụng các công nghệ như JDBC, Hibernate, Spring Data JPA để tương tác với cơ sở dữ liệu.

Tại sao nên sử dụng mô hình 3 lớp trong Spring Boot?

Mô hình 3 lớp (hay 3 layer) là một mô hình kiến trúc phần mềm phổ biến, và nó cũng được sử dụng trong Spring Boot để tách biệt các thành phần của ứng dụng ra thành các lớp khác nhau để dễ dàng quản lý, bảo trì và phát triển. Nó giúp tách biệt các thành phần chức năng của ứng dụng ra thành các lớp khác nhau, giúp cho việc phát triển, bảo trì và kiểm thử ứng dụng dễ dàng hơn. Và cũng giúp cho việc phát triển ứng dụng được chia nhỏ và quản lý tốt hơn. Việc sử dụng mô hình này cũng giúp cho việc tái sử dụng mã nguồn và quản lý dữ liệu được dễ dàng hơn. Spring Boot cung cấp các tính năng hỗ trợ cho mô hình này như Dependency Injection, Inversion of Control, Spring Data JPA, Spring MVC, ...

2. Ưu điểm và nhược điểm của mô hình 3layer trong Spring Boot?

Mô hình 3 lớp (hay 3 layer) là một mô hình kiến trúc phần mềm phổ biến, nó được sử dụng để tách biệt các thành phần của ứng dụng ra thành các lớp khác nhau để dễ dàng quản lý, bảo trì và phát triển. Dưới đây là một số ưu và nhược điểm của mô hình này:

Ưu điểm:

  • Tách biệt các thành phần chức năng: Mô hình 3 layer giúp tách biệt các thành phần chức năng khác nhau của ứng dụng ra thành các lớp khác nhau, giúp cho việc phát triển, bảo trì và kiểm thử ứng dụng dễ dàng hơn.
  • Dễ dàng quản lý và bảo trì: Với mô hình này, việc quản lý và bảo trì ứng dụng được dễ dàng hơn vì các thành phần của ứng dụng được chia nhỏ thành các lớp riêng biệt, đơn giản hóa việc tìm kiếm lỗi và sửa chữa.
  • Tính linh hoạt và mở rộng: Với mô hình 3 layer, các lớp có thể dễ dàng được mở rộng hoặc thay thế mà không ảnh hưởng đến các lớp khác.
  • Độc lập từng lớp: Mỗi lớp chỉ quan tâm đến nhiệm vụ của mình và không can thiệp vào các lớp khác, điều này giúp cho việc phát triển và bảo trì ứng dụng dễ dàng hơn.

Nhược điểm:

  • Tăng độ phức tạp: Việc sử dụng mô hình 3 layer có thể làm tăng độ phức tạp của ứng dụng, đặc biệt là khi ứng dụng phải xử lý nhiều dữ liệu và có nhiều thành phần phức tạp.
  • Tốn thời gian và công sức: Xây dựng mô hình 3 layer yêu cầu thời gian và công sức để tạo ra các lớp riêng biệt, xử lý các kết nối giữa chúng và kiểm thử chúng.
  • Khó khăn trong việc thiết kế và triển khai: Việc thiết kế và triển khai mô hình 3 layer có thể khó khăn đối với những người mới học và có thể yêu cầu một số kỹ năng đặc biệt.

Tóm lại, mô hình 3 layer có nhiều ưu điểm và nhược điểm, nhưng cần phải được sử dụng một cách cẩn thận và hợp lý để tránh các vấn đề phức tạp và tốn công sức. Mô hình này cũng cần phải được kết hợp với các phương pháp lập trình và thiết kế phần mềm khác để đảm bảo rằng ứng dụng được xây dựng một cách hiệu quả và dễ bảo trì.

Tuy nhiên, bạn cũng cần phải lưu ý rằng việc sử dụng mô hình 3 layer không phải là giải pháp tối ưu cho tất cả các loại ứng dụng. Trong một số trường hợp, mô hình này có thể làm tăng độ phức tạp của ứng dụng và làm giảm hiệu suất. Do đó, bạn nên xem xét kỹ trước khi sử dụng mô hình 3 layer và lựa chọn phương pháp lập trình và thiết kế phần mềm phù hợp nhất cho ứng dụng của mình.

3. Tầng Presentation Layer (GUI) trong mô hình 3layer.

Presentation Layer hay còn gọi là GUI (Graphical User Interface) là tầng giao diện người dùng trong mô hình 3 layer. Tầng này có nhiệm vụ hiển thị dữ liệu cho người dùng và cho phép người dùng tương tác với ứng dụng nói cụ thể là nó bao gồm giao diện người dùng (GUI) và các thành phần liên quan đến giao diện như HTML, CSS, JavaScript, v.v.

Tầng này bao gồm các thành phần như:

  • UI Components: Đây là các thành phần giao diện người dùng, bao gồm các thành phần như button, textbox, checkbox, radio button, dropdown list, v.v. Những thành phần này cho phép người dùng tương tác với ứng dụng và cung cấp dữ liệu cho lớp Logic Layer.

  • Presentation Logic: Đây là phần mềm giúp quản lý giao diện người dùng và điều khiển hoạt động của UI Components. Presentation Logic đóng vai trò quan trọng trong việc hiển thị dữ liệu cho người dùng và thu thập thông tin từ người dùng.

  • Presentation Service: Đây là một lớp trung gian giữa Presentation Logic và Business Logic Layer. Lớp này cung cấp các dịch vụ như kiểm tra tính hợp lệ của dữ liệu nhập vào, kiểm tra quyền truy cập của người dùng, v.v. Trong Spring Boot, Presentation Service có thể được hiện thực bằng các bean Spring Controller.

Presentation Layer là tầng giao tiếp trực tiếp với người dùng, vì vậy nó đóng vai trò quan trọng trong trải nghiệm người dùng và tạo ấn tượng ban đầu về ứng dụng. Một giao diện người dùng hấp dẫn và thân thiện sẽ giúp thu hút người dùng và làm tăng tính khả dụng của ứng dụng.

Tuy nhiên Presentation Layer có một số nhược điểm bao gồm:

  • Tầng này tập trung vào việc hiển thị dữ liệu và tương tác với người dùng, do đó không có nhiều kiến thức về business logic hoặc data layer. Điều này có thể làm cho Presentation Layer trở nên khó khăn trong việc xử lý các yêu cầu kinh doanh phức tạp.

  • Presentation Layer có thể yêu cầu nhiều tài nguyên về mặt thiết kế và phát triển, do đó có thể làm tăng chi phí và thời gian phát triển của ứng dụng.

4. Tầng Bussiness Layer (BLL) trong mô hình 3layer

Tầng Business Layer trong mô hình 3 layer là tầng đảm nhiệm nhiệm vụ xử lý logic của ứng dụng. Tầng này chịu trách nhiệm xử lý và xử lý dữ liệu, đồng thời cung cấp các dịch vụ và chức năng cho tầng Presentation Layer và tầng Persistence Layer.

Dưới đây là một số thành phần của tầng Business Layer:

  • Business Service: Business Service là thành phần chính của tầng Business Layer. Nó chứa các phương thức và thực hiện các hoạt động xử lý logic của ứng dụng.

Ví dụ: nếu bạn xây dựng một ứng dụng quản lý bán hàng, Business Service sẽ chứa các phương thức để thêm, sửa, xóa hoặc tìm kiếm thông tin sản phẩm, khách hàng và đơn hàng.

  • Data Transfer Object (DTO): DTO là một lớp đối tượng được sử dụng để truyền dữ liệu giữa tầng Business Layer và tầng Presentation Layer. Đối tượng DTO sẽ bao gồm các thuộc tính của đối tượng và các phương thức getter và setter để truy cập dữ liệu.

Ví dụ: nếu bạn muốn lấy thông tin một sản phẩm từ cơ sở dữ liệu và truyền nó cho tầng Presentation Layer, bạn có thể sử dụng đối tượng DTO để lưu trữ thông tin sản phẩm và truyền nó đến tầng Presentation Layer.

  • Business Process: Business Process là một thành phần quan trọng khác của tầng Business Layer. Nó chứa các quy trình và quy định xử lý dữ liệu để đảm bảo tính chính xác và đáng tin cậy của ứng dụng.

Ví dụ: nếu bạn xây dựng một ứng dụng thanh toán trực tuyến, Business Process sẽ chứa các quy trình xác thực thẻ tín dụng, xử lý thanh toán và gửi thông báo cho khách hàng về kết quả thanh toán.

  • Utility: Utility là một thành phần nhỏ của tầng Business Layer, cung cấp các công cụ và tiện ích để hỗ trợ việc xử lý dữ liệu.

Ví dụ: bạn có thể tạo một lớp Utility để mã hóa hoặc giải mã dữ liệu, tạo chuỗi ngẫu nhiên, kiểm tra định dạng dữ liệu, v.v.

Để dễ hiểu hơn thì mình sẽ cho các bạn một ví dụ minh họa cụ thể về tầng Bussiness Layer như sau:

Ví dụ, giả sử bạn đang xây dựng một ứng dụng đặt vé máy bay. Trong tầng Business Layer, Business Service sẽ chứa các phương thức để tìm kiếm, đặt vé, hủy và hủy vé, xử lý thanh toán, và quản lý thông tin vé máy bay. Đối tượng DTO sẽ được sử dụng để truyền thông tin vé máy bay giữa tầng Business Layer và tầng Presentation Layer. Business Process sẽ chứa các quy trình xử lý như xác thực tài khoản khách hàng, kiểm tra số lượng vé còn lại, và tính toán giá vé dựa trên thời gian đặt vé và số lượng vé được đặt. Utility sẽ cung cấp các công cụ để xử lý dữ liệu, ví dụ như tạo chuỗi ngẫu nhiên để làm mã đặt vé.

Lợi ích và khó khăn gặp phải của Bussiness Layer:

Tầng Business Layer đảm bảo tính logic và tính nhất quán của ứng dụng. Nó cung cấp các phương thức và dịch vụ để tầng Presentation Layer và tầng Persistence Layer sử dụng. Tầng này đóng vai trò quan trọng trong việc phân chia và quản lý các chức năng và dịch vụ của ứng dụng, đồng thời giúp tăng tính bảo mật, bảo trì và tái sử dụng của mã nguồn. Tuy nhiên, việc phân chia chức năng của tầng Business Layer có thể gây ra tình trạng quá tải, khó khăn trong việc quản lý luồng dữ liệu và gây ra khó khăn cho việc kiểm thử.

5. Tầng Data Layer (DAL) trong mô hình 3layer

Data Layer (DAL) là tầng dưới cùng trong mô hình 3 lớp và đóng vai trò quản lý truy cập vào cơ sở dữ liệu của ứng dụng.

Các thành phần của Data Layer bao gồm:

  • Database: Cơ sở dữ liệu là thành phần chính của Data Layer. Nó là nơi lưu trữ dữ liệu cho ứng dụng và hỗ trợ các hoạt động truy vấn, thêm, sửa, xóa dữ liệu.

Ví dụ: Cơ sở dữ liệu SQL Server, MySQL, Oracle, MongoDB.

  • Data Access Objects (DAOs): DAOs là thành phần đại diện cho các đối tượng trong cơ sở dữ liệu và xử lý các thao tác truy vấn, thêm, sửa, xóa dữ liệu từ cơ sở dữ liệu.

Ví dụ: Nếu ứng dụng của bạn có bảng User trong cơ sở dữ liệu, thì một DAO có thể được tạo để đại diện cho bảng này và xử lý các thao tác truy vấn, thêm, sửa, xóa dữ liệu của bảng User.

  • Connection Manager: Connection Manager là thành phần quản lý các kết nối đến cơ sở dữ liệu và xử lý các hoạt động liên quan đến kết nối, bao gồm tạo, đóng kết nối và quản lý thời gian kết nối.

Ví dụ: Nếu ứng dụng của bạn sử dụng cơ sở dữ liệu SQL Server, thì Connection Manager sẽ quản lý các kết nối đến cơ sở dữ liệu SQL Server.

  • Data Transfer Objects (DTOs): DTOs là các đối tượng dùng để chuyển dữ liệu giữa các tầng trong ứng dụng, bao gồm tầng Data Layer và tầng Business Layer.

Ví dụ: Nếu ứng dụng của bạn có một đối tượng User, thì một DTO có thể được tạo để chuyển đổi các thuộc tính của đối tượng User sang dữ liệu có thể được lưu trữ trong cơ sở dữ liệu.

Lợi ích và khó khăn gặp phải của Data Layer:

Lợi ích của tầng Data Layer:

  1. Độc lập với các tầng khác: Tầng Data Layer được thiết kế độc lập với các tầng khác trong mô hình 3-layer architecture. Điều này có nghĩa là các thay đổi trong các tầng khác sẽ không ảnh hưởng đến tầng dữ liệu này, đảm bảo tính ổn định của hệ thống.

  2. Quản lý dữ liệu hiệu quả: Tầng Data Layer cho phép quản lý dữ liệu hiệu quả hơn. Dữ liệu được lưu trữ ở một nơi duy nhất và có thể được truy xuất từ các tầng khác thông qua các API.

  3. Bảo mật dữ liệu: Tầng Data Layer cho phép bảo mật dữ liệu một cách tốt nhất. Dữ liệu được lưu trữ trên các máy chủ và có thể được mã hóa để bảo vệ khỏi các cuộc tấn công từ bên ngoài.

Tuy nhiên, tầng Data Layer cũng gặp phải một số khó khăn như sau:

  1. Chi phí cao: Tầng Data Layer yêu cầu các nguồn lực phần cứng và phần mềm đắt đỏ để xây dựng và duy trì.

  2. Khó khăn trong việc thay đổi dữ liệu: Khi có nhu cầu thay đổi cấu trúc dữ liệu, các thay đổi này phải được thực hiện ở tầng dữ liệu và có thể ảnh hưởng đến các tầng khác trong mô hình 3-layer architecture.

  3. Khó khăn trong việc đồng bộ dữ liệu: Nếu dữ liệu được lưu trữ trên nhiều máy chủ khác nhau, việc đồng bộ hóa dữ liệu giữa các máy chủ này có thể gặp khó khăn.

6. Mô phỏng cấu trúc của mô hình 3layer

Sau đây sẽ là một ví dụ demo nhỏ mô phỏng về cấu trúc mô hình 3layer:

Presentation Layer:

Lớp này là nơi chứa các API hoặc URL mà người dùng sẽ truy cập để tương tác với ứng dụng. Trong Spring Boot, lớp giao diện người dùng được triển khai bằng các đối tượng Controller, các đối tượng này đóng vai trò điều khiển các yêu cầu từ người dùng và phản hồi lại kết quả.

@RestController
@RequestMapping("/users")
public class UserController {
 
    @Autowired
    private UserService userService;
 
    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }
 
    @PostMapping("/")
    public User createUser(@RequestBody User user) {
        return userService.createUser(user);
    }
 
    @PutMapping("/")
    public User updateUser(@RequestBody User user) {
        return userService.updateUser(user);
    }
 
    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
    }
}

Business Layer:

Lớp này chứa các thao tác xử lý nghiệp vụ của ứng dụng, như xử lý dữ liệu, tính toán, kiểm tra điều kiện, xác thực, phân quyền và bảo mật. Trong Spring Boot, lớp logic được triển khai bằng các đối tượng Service, các đối tượng này đóng vai trò thực hiện các thao tác nghiệp vụ và tương tác với lớp truy xuất dữ liệu.

@Service
public class UserServiceImpl implements UserService {
 
    @Autowired
    private UserRepository userRepository;
 
    @Override
    public User getUserById(Long id) {
        return userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("User", "id", id));
    }
 
    @Override
    public User createUser(User user) {
        return userRepository.save(user);
    }
 
    @Override
    public User updateUser(User user) {
        User existingUser = userRepository.findById(user.getId()).orElseThrow(() -> new ResourceNotFoundException("User", "id", user.getId()));
        existingUser.setName(user.getName());
        existingUser.setEmail(user.getEmail());
        return userRepository.save(existingUser);
    }
 
    @Override
    public void deleteUser(Long id) {
        User user = userRepository.findById(id).orElseThrow(() -> new
ResourceNotFoundException("User", "id", id));
userRepository.delete(user);
}
}

Data Access Layer:

Đây là ví dụ về tầng Data Access Layer sử dụng ngôn ngữ SQL để truy vấn và thao tác với cơ sở dữ liệu.

CREATE TABLE customers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    email VARCHAR(255),
    phone VARCHAR(255)
);
```java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

Trong ví dụ này, UserRepository được kế thừa từ JpaRepository, một interface của Spring Data JPA, cung cấp các phương thức thực hiện các thao tác truy xuất dữ liệu như tìm kiếm, thêm, sửa và xóa.

7. Các câu hỏi thường gặp

Mô hình 3-layer là gì?

Mô hình 3-layer là một kiến trúc phần mềm phổ biến, trong đó ứng dụng được chia thành ba tầng: Presentation Layer (tầng hiển thị), Business Layer (tầng xử lý logic) và Data Layer (tầng truy xuất cơ sở dữ liệu)

Làm thế nào để triển khai tầng Business Layer trong Spring Boot?

Để triển khai tầng Business Layer trong Spring Boot, bạn có thể sử dụng các bean Spring để xử lý logic. Bạn có thể tạo các class đại diện cho các use case và triển khai các method để xử lý logic. Spring Boot cung cấp tính năng Dependency Injection để tiện lợi cho việc sử dụng các bean này.

Làm thế nào để triển khai tầng Data Layer trong Spring Boot?

Để triển khai tầng Data Layer trong Spring Boot, bạn có thể sử dụng Spring Data JPA để truy xuất cơ sở dữ liệu. Spring Data JPA cung cấp các repository để thao tác với cơ sở dữ liệu, giúp cho việc tạo, đọc, cập nhật và xóa dữ liệu dễ dàng hơn.

8. Kết bài viết

Trong bài viết này, chúng ta đã tìm hiểu về mô hình 3layer trong Spring Boot, một kiến trúc phần mềm phổ biến giúp tách biệt các phần khác nhau của ứng dụng và dễ dàng quản lý, phát triển và bảo trì. Chúng ta đã tìm hiểu chi tiết về cấu trúc và chức năng của từng tầng trong mô hình 3-layer, cũng như các lợi ích và thách thức khi triển khai mô hình này trong Spring Boot.

Việc áp dụng mô hình 3-layer trong Spring Boot sẽ giúp cho các nhà phát triển tối ưu hóa hiệu suất của ứng dụng, dễ dàng thay đổi và bảo trì ứng dụng trong tương lai. Nếu bạn đang có ý định triển khai mô hình 3-layer trong ứng dụng của mình, hy vọng bài viết này sẽ giúp ích cho bạn.

Cùng chuyên mục:

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Cách sử dụng Spring  Scheduled trong Spring Boot

Cách sử dụng Spring Scheduled trong Spring Boot

Cách dùng Groovy trong Spring Boot Java

Cách dùng Groovy trong Spring Boot Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo ứng dụng Chat với Spring Boot và Websocket

Tạo ứng dụng Chat với Spring Boot và Websocket

Sử dụng JUnit để tạo unit test trong Spring Boot

Sử dụng JUnit để tạo unit test trong Spring Boot

Cách triển khai Spring Boot trên Tomcat Server

Cách triển khai Spring Boot trên Tomcat Server

Cách test RESTful API trong Spring Boot

Cách test RESTful API trong Spring Boot

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Top