Skip to main content

Command Palette

Search for a command to run...

Bài 8: Spring Boot Starter Projects

Published
4 min readView as Markdown

1. Giới thiệu về Spring Boot Starter Projects

Spring Boot Starter Projects là các dự án khởi đầu được thiết kế để giúp các nhà phát triển bắt đầu nhanh chóng với một loạt các công nghệ phổ biến. Mỗi starter project bao gồm một tập hợp các dependency cần thiết cho một tính năng cụ thể, giúp loại bỏ công việc cấu hình phức tạp và tiết kiệm thời gian khi bắt đầu một dự án mới.

2. Các Spring Boot Starter Projects phổ biến

Dưới đây là một số starter projects phổ biến và thường được sử dụng trong các ứng dụng Spring Boot:

  • spring-boot-starter-web: Cung cấp các dependency cần thiết để phát triển các ứng dụng web, bao gồm Spring MVC, Tomcat (embedded), và Jackson (cho JSON processing).

  • spring-boot-starter-data-jpa: Cung cấp các dependency cần thiết để sử dụng JPA (Java Persistence API) với Spring Data JPA và Hibernate.

  • spring-boot-starter-security: Cung cấp các dependency cần thiết để bảo mật ứng dụng bằng Spring Security.

  • spring-boot-starter-test: Cung cấp các dependency cần thiết để kiểm thử ứng dụng, bao gồm JUnit, Hamcrest, và Mockito.

  • spring-boot-starter-thymeleaf: Cung cấp các dependency cần thiết để sử dụng Thymeleaf làm template engine.

  • spring-boot-starter-actuator: Cung cấp các dependency cần thiết để theo dõi và quản lý ứng dụng, bao gồm các endpoint cho health, metrics, và info.

3. Cách sử dụng và tích hợp Starter Projects vào dự án

3.1. Sử dụng Spring Initializr

Spring Initializr là một công cụ trực tuyến giúp tạo dự án Spring Boot với các starter project một cách dễ dàng. Bạn có thể truy cập Spring Initializr và chọn các dependency cần thiết cho dự án của mình.

Ví dụ, để tạo một dự án Spring Boot với các starter project spring-boot-starter-webspring-boot-starter-data-jpa, bạn có thể làm như sau:

  1. Chọn Project: Maven

  2. Chọn Language: Java

  3. Nhập Group: com.example

  4. Nhập Artifact: myapp

  5. Chọn Spring Boot Version: 2.5.4 (hoặc phiên bản mới nhất)

  6. Thêm Dependencies:

    • Spring Web

    • Spring Data JPA

  7. Nhấn "Generate" để tải xuống dự án.

3.2. Thêm Starter Projects vào dự án hiện tại

Nếu bạn đã có một dự án Spring Boot và muốn thêm các starter project, bạn có thể cập nhật file pom.xml (đối với Maven) hoặc build.gradle (đối với Gradle).

Ví dụ với Maven:

<dependencies>
    <!-- Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Starter Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- Starter Security -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <!-- Starter Test -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

Ví dụ với Gradle:

dependencies {
    // Starter Web
    implementation 'org.springframework.boot:spring-boot-starter-web'

    // Starter Data JPA
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

    // Starter Security
    implementation 'org.springframework.boot:spring-boot-starter-security'

    // Starter Test
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

4. Ví dụ sử dụng các Starter Projects

4.1. Tạo một ứng dụng RESTful với Spring Boot Starter Web

Bước 1: Thêm dependency vào pom.xml hoặc build.gradle như đã trình bày ở trên.

Bước 2: Tạo một REST controller.

// HelloController.java
package com.example.myapp.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}

Bước 3: Chạy ứng dụng và truy cập URL http://localhost:8080/api/hello.

4.2. Tạo một ứng dụng với Spring Data JPA

Bước 1: Thêm dependency vào pom.xml hoặc build.gradle.

Bước 2: Cấu hình kết nối cơ sở dữ liệu trong application.properties.

# application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update

Bước 3: Tạo entity và repository.

// User.java
package com.example.myapp.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;

    // getters and setters
}

// UserRepository.java
package com.example.myapp.repository;

import com.example.myapp.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

Bước 4: Tạo service và controller.

// UserService.java
package com.example.myapp.service;

import com.example.myapp.entity.User;
import com.example.myapp.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> findAll() {
        return userRepository.findAll();
    }
}

// UserController.java
package com.example.myapp.controller;

import com.example.myapp.entity.User;
import com.example.myapp.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getAllUsers() {
        return userService.findAll();
    }
}

Bước 5: Chạy ứng dụng và truy cập URL http://localhost:8080/api/users.

5. Kết luận

Trong bài viết này, chúng ta đã tìm hiểu về các Spring Boot Starter Projects phổ biến và cách sử dụng chúng để tích hợp các tính năng vào dự án một cách dễ dàng. Spring Boot Starter Projects giúp tiết kiệm thời gian cấu hình và cho phép các nhà phát triển tập trung vào việc phát triển các tính năng chính của ứng dụng.

Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu về cơ chế Auto Configuration trong Spring Boot và cách tùy chỉnh Auto Configuration để phù hợp với nhu cầu cụ thể của ứng dụng.

More from this blog

devngu

169 posts