Bước đầu tìm hiểu Spring Boot
spring
69
spring boot
76
programming
82
Java
164
White

Nguyễn Tuấn Anh viết ngày 27/01/2019

Trong bài viết này, mình sẽ giúp các bạn bước đầu tìm hiểu về Spring Boot.


1. Tổng quan về Spring Boot

Spring Boot là một dự án nổi bật trong hệ sinh thái Spring Framework. Nếu như trước đây, công đoạn khởi tạo một dự án Spring khá vất vả từ việc khai báo các dependency trong file pom.xml cho đến cấu hình bằng XML hoặc annotation phức tạp, thì giờ đây với Spring Boot, chúng ta có thể tạo các ứng dụng Spring một cách nhanh chóng và cấu hình cũng đơn giản hơn.

Dưới đây là một số tính năng nổi bật của Spring Boot:

  • Đóng gói ứng dụng Spring dưới dạng một file JAR (stand-alone application). Chúng ta có thể dễ dàng start ứng dụng Spring chỉ với câu lệnh quen thuộc java -jar.
  • Tối ưu công đoạn cấu hình cho ứng dụng Spring, không sinh code cấu hình và không yêu cầu phải cấu hình bằng XML.
  • Cung cấp một loạt các tính năng phi chức năng phổ biến cho các dự án lớn như nhúng trực tiếp web server như Tomcat, Jetty, ... vào ứng dụng, bảo mật, health check...

Hiện tại, Spring Boot có 2 version chính là:

  • v1.5.x
  • v2.x

2. Tạo ứng dụng Spring Boot đầu tiên

2.1. Khởi tạo ứng dụng

Cách đơn giản nhất để khởi tạo một ứng dụng Spring Boot, đó là chúng ta sẽ truy cập vào trang web Spring Initializr:

  • Chọn build tool: Maven hay Gradle
  • Chọn ngôn ngữ lập trình: Java, Kotlin hay Groovy
  • Chọn version của Spring Boot
  • Nhập tên của Group và Artifact
  • Lựa chọn các dependency cần cho ứng dụng (ví dụ như Web, Security, JPA, Actuator, Devtools, ...)

Cuối cùng click button Generate Project để download project xuống.

Spring Boot Initializer

Ngoài ra, chúng ta cũng có thể dùng các tool khác để khởi tạo ứng dụng Spring Boot như Spring Tool Suite chẳng hạn.

2.2. Cấu trúc thư mục

Dưới đây là cây thư mục của ứng dụng

Spring Boot source tree

Còn đây là file pom.xml, đơn giản hơn rất nhiều so với cách khởi tạo thông thường:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.19.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>org.ashina</groupId>
    <artifactId>helloworld</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>helloworld</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Lúc này toàn bộ cấu hình của dự án sẽ gói gọn trong 1 file là HelloworldApplication.java:

package org.ashina.helloworld;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloworldApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloworldApplication.class, args);
    }

}

Annotation @SpringBootApplicationcomposed annotation của 3 annotation @EnableAutoConfiguration, @ComponentScan, @Configuration:

  • @Configuration: đánh dấu lớp HelloworldApplication là lớp chứa các định nghĩa bean của ApplicationContext.
  • @EnableAutoConfiguration: nhắc Spring Boot bắt đầu thêm các bean dựa trên các classpath setting, các property setting và các bean khác. Đối với ứng dụng Spring MVC, chúng ta thường phải thêm @EnableWebMvc, tuy nhiên Spring Boot sẽ tự động thêm annotation này.
  • @ComponentScan: nhắc Spring tìm kiếm các component và configuration bên trong package org.ashina.helloworld.

2.3. Build ứng dụng

Trong thư mục của source code, chúng ta chạy lệnh sau để build ứng dụng:

$ mvn clean install

Sau khi build thành công, chúng ta thử vào thư mục target của source code, sẽ thấy file helloworld-0.0.1-SNAPSHOT.jar được sinh ra.

2.4. Chạy ứng dụng

Trong thư mục target, chạy file helloworld-0.0.1-SNAPSHOT.jar bằng lệnh:

$ java -jar helloworld-0.0.1-SNAPSHOT.jar

Kết quả nếu chạy thành công:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v1.5.19.RELEASE)

2019-01-27 09:34:13.387  INFO 9220 --- [           main] o.a.helloworld.HelloworldApplication     : Starting HelloworldApplication v0.0.1-SNAPSHOT on Yuen-PC with PID 9220 (E:\spring\target\helloworld-0.0.1-SNAPSHOT.jar started by Administrator in E:\spring\target)
2019-01-27 09:34:13.411  INFO 9220 --- [           main] o.a.helloworld.HelloworldApplication     : No active profile set, falling back to default profiles: default
2019-01-27 09:34:13.583  INFO 9220 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@30946e09: startup date [Sun Jan 27 09:34:13 ICT 2019];root of context hierarchy
2019-01-27 09:34:15.375  INFO 9220 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2019-01-27 09:34:15.436  INFO 9220 --- [           main] o.a.helloworld.HelloworldApplication     : Started HelloworldApplication in 3.316 seconds (JVM runningfor 6.698)
2019-01-27 09:34:15.438  INFO 9220 --- [       Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@30946e09: startup date [Sun Jan 27 09:34:13 ICT 2019]; root of context hierarchy
2019-01-27 09:34:15.440  INFO 9220 --- [       Thread-2] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown

Do ứng dụng của chúng ta không phải là ứng dụng Spring MVC (cho nên không có embedded server), nên sau khi start thành công sẽ shutdown luôn.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Nguyễn Tuấn Anh

30 bài viết.
259 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
58 42
MyContact là một ứng dụng mà mình thường viết mỗi khi học một ngôn ngữ hay công nghệ mới. MyContact chỉ là một ứng dụng CRUD đơn giản, cho phép ngư...
Nguyễn Tuấn Anh viết hơn 3 năm trước
58 42
White
40 17
Hướng dẫn lập trình Spring Security Trong bài viết lần này, mình sẽ giúp các bạn bước đầu tìm hiểu (Link) thông qua xây dựng các chức năng: Đăng ...
Nguyễn Tuấn Anh viết hơn 3 năm trước
40 17
White
22 0
Trước đây khi mới học Spring, mình thường nhảy thẳng lên tìm hiểu các project như Spring MVC hay Spring Boot để viết ứng dụng, thỉnh thoảng mới ngó...
Nguyễn Tuấn Anh viết gần 2 năm trước
22 0
Bài viết liên quan
White
4 0
I used Spring boot, Hibernate few times back then at University, I'v started using it again recently. In this (Link), I want to check how Spring J...
Rey viết hơn 1 năm trước
4 0
White
57 23
Luận về comment code (Phong cách kiếm hiệp) Comment code luôn là vấn đề gây tranh cãi sứt đầu mẻ trán trong giới võ lâm. Xưa kia, thuở còn mài đít...
Huy Hoàng Phạm viết gần 5 năm trước
57 23
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
30 bài viết.
259 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!