Mục lục
Có lẽ các rất nhiều các dự án Spring Boot hiện nay đang sử dụng spring-boot-starter-parent, tuy nhiên có thể nhiều bạn chưa để ý lắm đến những lợi ích mà nó mang lại. Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu xem dependency này có gì hay ho nhé.
Spring Boot Starter Parent
Project spring-boot-starter-parent là một starter project đặc biệt, cung cấp nhiều cấu hình mặc định cho ứng dụng spring boot của chúng ta. Ngoài ra nó cũng cung cấp các cấu hình mặc định cho các Maven Plugin như maven-failsafe-plugin, maven-jar-plugin, maven-surefire-plugin, maven-war-plugin.
Nó cũng kế thừa cơ chế quản lý các dependency từ spring-boot-dependencies nhầm điều phối các dependency trong dự án có thể hoạt động tốt với nhau, giảm thiểu khả năng xung đột hoặc không tương thích giữa các dependency.
Chúng ta có thể sử dụng spring-boot-starter-parent trong project bằng cách thêm nó vào file pom.xml.
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> </parent>
Bạn bạn cũng có thể sử dụng phiên bản mới nhất của nó tạo Maven Central.
Quản lý các dependency
Khi đã sử dụng spring-boot-starter-parent trong project, chúng ta có thể sử dụng bất kỳ một dependency nào chỉ bằng cách khai báo nó trong dependencies tag. Một tính năng rất quan trọng của spring-boot-starter-parent đó là chúng ta không cần khai báo version cho những dependency, maven sẽ tự động download gói jar tương ứng với version đã được starter parent định nghĩa.
Ví dụ nếu chúng ta đang phát triển một ứng dụng web, chúng ta chỉ cần thêm spring-boot-starter-web vào mà không cần chỉ định version, nó sẽ được định nghĩa trong starter parent.
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
Dependency Management Tag
Để thay đổi version của một dependency đã được starter parent định nghĩa chúng ta có thể khai báo dependency và versio rõ ràng trong dependencyManagement tag.
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.2.5.RELEASE</version> </dependency> </dependencies> </dependencyManagement>
Properties
Để thay đổi giá trị của một thuộc tính đã được định nghĩa bên trong starter parent, chúng ta có thể khai báo lại giá trị của thuộc tính này.
spring-boot-starter-parent thông qua spring-boot-dependencies sử dụng các thuộc tính để cấu hình tất cả các dependency version, Java version và Maven plugin version.
Do đó, nó giúp chúng ta dễ dàng kiểm soát các cấu hình này bằng cách chỉ cần thay đổi thuộc tính tương ứng.
<properties> <junit.version>4.11</junit.version> </properties>
Nếu chúng ta muốn thay đổi version của bất kỳ một dependency nào đã được định nghĩa trong starter parent, thì có thể chỉ định thẳng trong dependency tag và properties tag.
<properties> <junit.version>4.11</junit.version> </properties>
Hoặc thay đổi java version sang Java 8.
<properties> <java.version>1.8</java.version> </properties>
Kết bài
Vậy là chúng ta đã biết được một số tính năng ưu việt của spring-boot-starter-parent rồi phải không nào. Hãy tưởng tượng dự án của bạn sử dụng rất nhiều dependency, mà các bạn biết rồi đấy việc này sẽ rất dễ xảy ra xung đột giữa các dependency với nhau, để mà quản lý thủ công sẽ tốn rất nhiều thời gian do vậy stater parent đã giúp chúng ta làm điều đó. Đảm bảo các dependency có thể hoạt động tốt với nhau mà không cần chúng ta phải đụng tay vào.