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

Cách dùng Spring JDBC trong ứng dụng Spring Boot Java

Nếu bạn đang tìm kiếm một công nghệ đáng tin cậy để tương tác với cơ sở dữ liệu trong ứng dụng Spring Boot của mình, thì mình nghĩ Spring Boot sẽ là một sự lựa chọn không hề tồi.

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.

Trong bài viết này, chúng ta sẽ tìm hiểu về cách sử dụng Spring JDBC trong Spring Boot, bao gồm cách cấu hình, tạo các truy vấn và thực hiện các thao tác với cơ sở dữ liệu. Ngoài ra, chúng ta cũng sẽ xem xét một số ví dụ cụ thể để giúp bạn hiểu rõ hơn về cách sử dụng Spring JDBC trong Spring Boot.

1. Spring JDBC là gì?

springJDBC jpg

Spring JDBC

Spring JDBC là một module trong Spring Framework, cung cấp các lớp và phương thức giúp tương tác với cơ sở dữ liệu quan hệ trong Java. Nó cung cấp một cách tiếp cận đơn giản và hiệu quả để thực hiện các thao tác cơ bản với cơ sở dữ liệu như truy vấn, thêm, sửa và xóa dữ liệu.

Tính năng:

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

Spring JDBC giúp cho việc tương tác với cơ sở dữ liệu trở nên dễ dàng hơn bằng cách cung cấp một số tính năng như:

  • Cung cấp một lớp cơ sở để thực hiện các truy vấn với cơ sở dữ liệu.
  • Hỗ trợ kết nối đến cơ sở dữ liệu thông qua JDBC API, một giao diện tiêu chuẩn cho các truy cập cơ sở dữ liệu quan hệ.
  • Cung cấp tính năng như khai báo tham số và ánh xạ kết quả của truy vấn vào các đối tượng Java.
  • Hỗ trợ các tính năng như Transaction Management và Exception Handliing.

Hạn chế của Spring JDBC:

Mặc dù Spring JDBC là một công nghệ rất hữu ích để tương tác với cơ sở dữ liệu trong ứng dụng Spring Boot, nhưng nó vẫn có một số hạn chế nhất định, bao gồm:

  • Khó khăn trong việc quản lý tài nguyên: Khi sử dụng Spring JDBC, chúng ta phải tự quản lý kết nối cơ sở dữ liệu, việc đóng kết nối và các tài nguyên khác liên quan. Điều này có thể gây ra khó khăn trong việc quản lý tài nguyên, đặc biệt là trong các ứng dụng lớn.

  • Khả năng mở rộng hạn chế: Spring JDBC hỗ trợ một số tính năng như Transaction Management và Exception Handling, nhưng nó không đủ mạnh để xử lý các tình huống phức tạp hơn. Điều này có thể gây ra khó khăn trong việc mở rộng ứng dụng và xử lý các tình huống đặc biệt.

  • Phức tạp trong việc xử lý dữ liệu đối tượng: Khi sử dụng Spring JDBC, chúng ta phải tự định nghĩa các truy vấn SQL và ánh xạ dữ liệu vào các đối tượng Java. Điều này có thể gây ra khó khăn trong việc xử lý dữ liệu đối tượng và đặc biệt là khi phải xử lý các mô hình dữ liệu phức tạp.

Tóm lại, mặc dù Spring JDBC là một công nghệ hữu ích và phổ biến trong ứng dụng Spring Boot, nhưng nó vẫn có một số hạn chế nhất định. Trong một số trường hợp, chúng ta có thể cần sử dụng các công nghệ khác như ORM (Object-Relational Mapping) hoặc NoSQL để xử lý các tình huống phức tạp hơn.

2. Tạo dự án với Spring JDBC trong ứng dụng Spring Boot

Hôm nay mình sẽ hướng dẫn cho các bạn các bước tạo một dự án với Spring JDBC trong Spring Boot chạy được cả trên Eclipse, Netbean và IntelliJ IDEA.

Bước 1: Các bước tạo project

Sử dụng Spring Initializr để tạo dự án Spring Boot với các dependencies cần thiết cho Spring JDBC. Bạn có thể truy cập trang web Spring Initializr tại địa chỉ https://start.spring.io/ và chọn các dependencies như sau:

  • Spring Web
  • Spring JDBC
  • MySQL Driver (hoặc driver của cơ sở dữ liệu mà bạn đang sử dụng)

bc1 png

Lưu ý ở đây bạn phải chọn các cấu hình phù hợp cho phần mềm của mình như là Spring Boot version hay là loại project. Bước tiếp theo bạn cần tìm đến các dependencies và thêm vào sau đó ấn chọn Generate để xuất project (ở dạng nén .zip).

Tiếp theo, bạn chỉ cần giải nén tệp tải về từ Spring Initializr và mở dự án trong IDE của bạn (IntelliJ IDEA, Eclipse, NetBeans, vv.).

Bước 2: Tạo một lớp cấu hình để cấu hình kết nối đến cơ sở dữ liệu của bạn.

Sau khi đã có project bước tiếp theo của bạn là tạo ra một class cấu hình đến kết nối đến cơ sở dữ liệu, sau đây là một ví dụ:

@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }

    @Bean
    public JdbcTemplate jdbcTemplate() {
        return new JdbcTemplate(dataSource());
    }
}

Ở ví dụ trên bạn cần đặt thông tin kết nối đến file cơ sở dữ liệu của bạn cho chính xác (Username, Password).

Trong đó, bạn định nghĩa một DataSource để cấu hình kết nối đến cơ sở dữ liệu của bạn và một JdbcTemplate để sử dụng Spring JDBC để thực hiện các truy vấn.

Bước 3: Tạo @RestController.

Tạo một @RestController để xử lý các yêu cầu HTTP và sử dụng JdbcTemplate để thực hiện các truy vấn cơ sở dữ liệu.

Ví dụ:

@RestController
public class UserController {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @GetMapping("/users")
    public List<User> getUsers() {
        return jdbcTemplate.query("SELECT * FROM users", new BeanPropertyRowMapper<>(User.class));
    }

    @PostMapping("/users")
    public void addUser(@RequestBody User user) {
        jdbcTemplate.update("INSERT INTO users(name, email) VALUES(?, ?)", user.getName(), user.getEmail());
    }

    // ...
}

Trong đó, bạn sử dụng jdbcTemplate để thực hiện các truy vấn cơ sở dữ liệu và sử dụng BeanPropertyRowMapper để ánh xạ kết quả truy vấn vào các đối tượng User.

Bước 4: Chạy ứng dụng và kiểm tra kết quả.

Trên đây là một số bước cơ bản để tạo một dự án Spring Boot sử dụng Spring JDBC. Tuy nhiên, để sử dụng Spring JDBC hiệu quả, bạn cần phải hiểu rõ hơn về cách sử dụng nó và các tính năng của nó.

=> Trên đây chỉ là một ví dụ đơn giản nhằm giúp bạn hiểu khái quát về cách dựng một project Spring JDBC trong ứng dụng Spring Boot, để đi sâu vào cấu trúc bên trong ứng dụng bạn hãy theo dõi tiếp các phần sau của bài viết nhé.

3. Cấu trúc ứng dụng

Cấu trúc ứng dụng Spring JDBC trong ứng dụng Spring Boot có thể được tổ chức theo các lớp và gói.

Sau đây mình sẽ nêu rõ cấu trúc đầy đủ bên trong ứng dụng, và sẽ đưa các ví dụ cụ thể cho từng lớp, hãy theo dõi nhé:

3.1. Class AppConfig

Lớp AppConfig là một lớp cấu hình trong Spring, được sử dụng để cung cấp thông tin kết nối đến cơ sở dữ liệu và khởi tạo các đối tượng cần thiết trong ứng dụng Spring JDBC. Lớp này có thể được đánh dấu bằng các annotation @Configuration@Bean, giúp Spring Boot tự động quản lý và cấu hình cho ứng dụng.

Nhiệm vụ các phương thức:

Các phương thức @Bean trong AppConfig có nhiệm vụ cung cấp các đối tượng mà ứng dụng cần sử dụng. Trong trường hợp này, dataSource() jdbcTemplate() là hai phương thức @Bean quan trọng để cấu hình kết nối đến cơ sở dữ liệu và khởi tạo JdbcTemplate.

Phương thức dataSource() trả về một đối tượng DataSource để Spring JDBC có thể sử dụng để kết nối đến cơ sở dữ liệu. Trong ví dụ trên, DriverManagerDataSource được sử dụng để tạo kết nối đến cơ sở dữ liệu MySQL.

Phương thức jdbcTemplate() trả về một đối tượng JdbcTemplate để thực hiện các truy vấn đến cơ sở dữ liệu. JdbcTemplate cung cấp nhiều phương thức tiện ích để thực hiện các truy vấn và cập nhật cơ sở dữ liệu.

Dưới đây là ví dụ về lớp AppConfig đầy đủ:

@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }

    @Bean
    public JdbcTemplate jdbcTemplate() {
        return new JdbcTemplate(dataSource());
    }
}

Trong ví dụ này, AppConfig được đánh dấu bằng annotation @Configuration, đồng thời cung cấp hai phương thức @BeandataSource()jdbcTemplate(). Phương thức dataSource() trả về một đối tượng DriverManagerDataSource đã được cấu hình để kết nối đến cơ sở dữ liệu MySQL, trong khi phương thức jdbcTemplate() trả về một đối tượng JdbcTemplate được khởi tạo với dataSource() đã được cấu hình từ phương thức trước đó.

3.2. Class Entity

Trong ứng dụng Spring JDBC, lớp Entity thường được sử dụng để biểu diễn đối tượng dữ liệu trong cơ sở dữ liệu. Lớp Entity định nghĩa các thuộc tính của đối tượng và các phương thức getter/setter để truy xuất và cập nhật dữ liệu.

Dưới đây là ví dụ về lớp User:

public class User {

    private Long id;
    private String name;
    private String email;
    private int age;

    public User() {}

    public User(Long id, String name, String email, int age) {
        this.id = id;
        this.name = name;
        this.email = email;
        this.age = age;
    }

    // Getters and setters

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Giải thích:

Trong ví dụ ở trên, để sử dụng lớp User như một đối tượng dữ liệu trong cơ sở dữ liệu, chúng ta cần định nghĩa một bảng tương ứng trong cơ sở dữ liệu. Trong trường hợp này, chúng ta có thể định nghĩa bảng users với các trường tương ứng với thuộc tính của lớp User.

Trong ví dụ này, lớp User định nghĩa các thuộc tính id, name, email và age của đối tượng người dùng. Các phương thức getter/setter được sử dụng để truy xuất và cập nhật các thuộc tính này. Điều này cho phép chúng ta lưu trữ và truy xuất dữ liệu từ bảng users trong cơ sở dữ liệu.

Ví dụ trên chỉ là một ví dụ đơn giản về lớp Entity, trong thực tế, lớp Entity có thể bao gồm nhiều thuộc tính và phương thức phức tạp hơn tùy thuộc vào mục đích sử dụng của ứng dụng.

3.3. Class Repository và class RepositoryImpl

Trong dự án Spring JDBC trong ứng dụng Spring Boot, lớp Repository là một interface được sử dụng để xác định các phương thức cơ bản cần thiết để thao tác với cơ sở dữ liệu. Lớp Repository sẽ được Spring Data cung cấp một số tính năng mở rộng như tự động sinh ra các phương thức thao tác cơ bản (CRUD) hoặc phương thức tìm kiếm theo tên phương thức.

Sau đây mình sẽ nói đến công dụng của từng lớp:

Class Repository là một interface đại diện cho một loại đối tượng (thường là một thực thể trong cơ sở dữ liệu) và khai báo các phương thức để thực hiện các thao tác cơ bản trên đối tượng đó, như thêm, sửa, xóa và truy vấn. Interface này thường được đánh dấu bằng annotation @Repository để Spring có thể quản lý và tự động tạo các đối tượng RepositoryImpl tương ứng.

Class RepositoryImpl là một class cụ thể triển khai các phương thức được khai báo trong interface Repository. Class này được đánh dấu bằng annotation @Repository để Spring có thể quản lý và tự động tạo các đối tượng RepositoryImpl tương ứng với mỗi đối tượng Repository. Class RepositoryImpl sử dụng các đối tượng JdbcTemplate và NamedParameterJdbcTemplate của Spring JDBC để thực hiện các thao tác truy vấn cơ sở dữ liệu.

Ví dụ, nếu bạn muốn tạo một Repository để thao tác với bảng "students" trong cơ sở dữ liệu, bạn có thể tạo một interface như sau:

@Repository
public interface StudentRepository {

    List<Student> findAll();
    Student findById(Long id);
    void save(Student student);
    void update(Student student);
    void delete(Long id);
}

Sau đó, bạn có thể triển khai interface này bằng class StudentRepositoryImpl, như sau:

@Repository
public class StudentRepositoryImpl implements StudentRepository {

    private JdbcTemplate jdbcTemplate;

    public StudentRepositoryImpl(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    @Override
    public List<Student> findAll() {
        String sql = "SELECT * FROM students";
        return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Student.class));
    }

    @Override
    public Student findById(Long id) {
        String sql = "SELECT * FROM students WHERE id = ?";
        return jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<>(Student.class));
    }

    @Override
    public void save(Student student) {
        String sql = "INSERT INTO students(name, age) VALUES (?, ?)";
        jdbcTemplate.update(sql, student.getName(), student.getAge());
    }

    @Override
    public void update(Student student) {
        String sql = "UPDATE students SET name = ?, age = ? WHERE id = ?";
        jdbcTemplate.update(sql, student.getName(), student.getAge(), student.getId());
    }

    @Override
    public void delete(Long id) {
        String sql = "DELETE FROM students WHERE id = ?";
        jdbcTemplate.update(sql, id);
    }
}

Trong class StudentRepositoryImpl, chúng ta sử dụng JdbcTemplate của Spring JDBC để thực hiện các thao tác truy vấn cơ sở dữ liệu được khai báo trong interface StudentRepository. Class này được đánh dấu bằng annotation @Repository để Spring có thể quản lý và tự động tạo đối tượng StudentRepositoryImpl tương ứng.

3.4. Class Controller

Trong dự án Spring JDBC trong ứng dụng Spring Boot, class Controller được sử dụng để xử lý các request và trả về các response cho client. Class này được đánh dấu bằng annotation @Controller để Spring Framework có thể quản lý và tự động tạo các đối tượng Controller tương ứng.

Class Controller sử dụng các đối tượng Service và Repository để thực hiện các thao tác logic và truy vấn cơ sở dữ liệu trong ứng dụng của bạn.

Ví dụ, nếu bạn muốn tạo một Controller để xử lý các request liên quan đến sinh viên, bạn có thể tạo một class như sau:

@Controller
@RequestMapping("/students")
public class StudentController {

    private StudentService studentService;

    public StudentController(StudentService studentService) {
        this.studentService = studentService;
    }

    @GetMapping
    public String getAllStudents(Model model) {
        List<Student> students = studentService.getAllStudents();
        model.addAttribute("students", students);
        return "students";
    }

    @GetMapping("/{id}")
    public String getStudentById(@PathVariable Long id, Model model) {
        Student student = studentService.getStudentById(id);
        model.addAttribute("student", student);
        return "student";
    }

    @GetMapping("/add")
    public String showAddStudentForm(Model model) {
        model.addAttribute("student", new Student());
        return "add-student";
    }

    @PostMapping("/add")
    public String addStudent(@ModelAttribute("student") Student student) {
        studentService.addStudent(student);
        return "redirect:/students";
    }

    @GetMapping("/{id}/edit")
    public String showEditStudentForm(@PathVariable Long id, Model model) {
        Student student = studentService.getStudentById(id);
        model.addAttribute("student", student);
        return "edit-student";
    }

    @PostMapping("/{id}/edit")
    public String editStudent(@PathVariable Long id, @ModelAttribute("student") Student student) {
        student.setId(id);
        studentService.updateStudent(student);
        return "redirect:/students";
    }

    @GetMapping("/{id}/delete")
    public String deleteStudent(@PathVariable Long id) {
        studentService.deleteStudent(id);
        return "redirect:/students";
    }
}

Trong class StudentController, chúng ta sử dụng đối tượng StudentService để thực hiện các thao tác logic và đối tượng Model để truyền dữ liệu từ Controller tới View.

Class này sử dụng các phương thức @GetMapping và @PostMapping để xử lý các request GET và POST từ client. Các phương thức này trả về tên của View để Spring có thể render và trả về cho client.

Bạn có thể sử dụng đối tượng StudentController để xử lý các request và trả về các response trong ứng dụng của bạn.

Với các ví dụ trên bạn có thể thay đổi các thông tin phù hợp vào dự án của mình và chạy chương trình nhé.

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

Đây là một số câu hỏi thường gặp về Spring JDBC trong ứng dụng Spring Boot:

Spring JDBC là gì và nó được sử dụng để làm gì trong ứng dụng Spring Boot?

Spring JDBC là một framework trong Spring Framework cung cấp các API để thực hiện các thao tác truy vấn cơ sở dữ liệu trong ứng dụng Java. Nó cung cấp các API để kết nối với cơ sở dữ liệu, thực hiện các truy vấn SQL và xử lý các kết quả trả về từ cơ sở dữ liệu. Spring JDBC được sử dụng trong ứng dụng Spring Boot để tạo các đối tượng DAO (Data Access Object) và thực hiện các thao tác truy vấn cơ sở dữ liệu trong ứng dụng.

Các API cơ bản của Spring JDBC là gì?

Các API cơ bản của Spring JDBC bao gồm:

  • JdbcTemplate: Là một class cung cấp các phương thức để thực hiện các truy vấn SQL và xử lý kết quả trả về từ cơ sở dữ liệu.
  • NamedParameterJdbcTemplate: Là một class cung cấp các phương thức để thực hiện các truy vấn SQL sử dụng các tham số đặt tên thay vì các tham số vị trí.
  • SimpleJdbcInsert: Là một class cung cấp các phương thức để thêm dữ liệu vào cơ sở dữ liệu một cách đơn giản.
  • SimpleJdbcCall: Là một class cung cấp các phương thức để gọi các stored procedure trong cơ sở dữ liệu.

Làm thế nào để tạo một đối tượng DAO sử dụng Spring JDBC trong ứng dụng Spring Boot?

Để tạo một đối tượng DAO sử dụng Spring JDBC trong ứng dụng Spring Boot, bạn cần tạo một interface DAO định nghĩa các phương thức để thực hiện các thao tác truy vấn cơ sở dữ liệu. Sau đó, bạn cần tạo một class implement interface DAO này và sử dụng các API của Spring JDBC để thực hiện các thao tác truy vấn cơ sở dữ liệu. Cuối cùng, bạn cần đăng ký đối tượng DAO này với Spring Framework để nó có thể được quản lý và sử dụng trong ứng dụng.

5. Kết bài viết

Spring JDBC là một trong những framework quan trọng trong Spring Framework và được sử dụng rộng rãi trong các ứng dụng Java. Việc sử dụng Spring JDBC trong ứng dụng Spring Boot giúp cho việc thực hiện các thao tác truy vấn cơ sở dữ liệu trở nên đơn giản và tiện lợi hơn.

Hy vọng bài viết này sẽ giúp bạn có được kiến thức cơ bản về Spring JDBC và cách sử dụng nó trong ứng dụng Spring Boot.

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