Spring Boot – Hello World!

Spring boot là một nền tảng mã nguồn mở dựa trên ngôn ngữ Java, được sử dụng để tạo micro-service. Nó được phát triển bởi Pivotal Team và được sử dụng để xây dựng một ứng dụng độc lập.

Micro Service là một kiến trúc mà cho phép những lập trình viên phát triển và triển khai các service một cách độc lập. Một vài lợi ích mà micro-service mang lại:

  • Triển khai dễ đàng
  • Mở rộng đơn giản
  • Tương thích với các Container
  • Cấu hình đơn giản
  • Thời gian phát triển nhanh

Nếu chúng ta từng sử dụng SpringMVC, Spring Security, Spring AOP, … thì phải cấu hình rất nhiều trong các file xml như: dispatcher-servlet.xml, spring-security.xml, web.xml,…Spring boot được thiết kế với các mục đích:

  • Không cần phải cấu hình XML phức tạp
  • Rút ngắn thời gian phát triển sản phẩm và triển khai độc lập

Spring boot tự động cấu hình ứng dụng dựa trên các annotation như: @EnableAutoConfiguration, @SpringBootApplication, @ComponentScan, …

  • @SpringBootApplication: để khởi động ứng dụng Spring Boot, chúng ta cần tạo class chứa annotation này và phương thức main.
  • @EnableAutoConfiguration: spring boot sẽ tự động cấu hình cho các ứng dụng dựa trên các dependency mà chúng ta cấu hình trong project.
  • @ComponentScan: spring boot tự động scan tất cả các component được cấu hình trong project.

Chúng ta tạo maven project với cấu trúc:

pom.xml

<?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>
   <groupId>vn.fstack</groupId>
   <artifactId>fstack-springboot</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.1.6.RELEASE</version>
      <relativePath />
      <!-- lookup parent from repository -->
   </parent>
   <properties>
      <java.version>1.8</java.version>
   </properties>
   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
</project>

Application.java

package vn.fstack.springboot;

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

@SpringBootApplication
public class Application {
	public static void main(String[] args) throws Exception {
		SpringApplication.run(Application.class, args);
	}
}

HelloController.java

package vn.fstack.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {
	@RequestMapping("/")
	@ResponseBody
	public String getHelloWorld() {
		return "Hello World!";
	}
}

Build project với maven:

mvn clean install


[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------< vn.fstack:fstack-springboot >---------------------
[INFO] Building fstack-springboot 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ fstack-springboot ---
[INFO] Deleting C:\Users\DELL\fstack\fstack-springboot\target
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ fstack-springboot ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ fstack-springboot ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to C:\Users\DELL\fstack\fstack-springboot\target\classes
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ fstack-springboot ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ fstack-springboot ---
[INFO] Changes detected - recompiling the module!
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ fstack-springboot ---
[INFO] 
[INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ fstack-springboot ---
[INFO] Building jar: C:\Users\DELL\fstack\fstack-springboot\target\fstack-springboot-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.1.6.RELEASE:repackage (repackage) @ fstack-springboot ---
[INFO] Replacing main artifact with repackaged archive
[INFO] 
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ fstack-springboot ---
[INFO] Installing C:\Users\DELL\fstack\fstack-springboot\target\fstack-springboot-0.0.1-SNAPSHOT.jar 
to C:\Users\DELL\.m2\repository\vn\fstack\fstack-springboot\0.0.1-SNAPSHOT\fstack-springboot-0.0.1-SNAPSHOT.jar
[INFO] Installing C:\Users\DELL\fstack\fstack-springboot\pom.xml 
to C:\Users\DELL\.m2\repository\vn\fstack\fstack-springboot\0.0.1-SNAPSHOT\fstack-springboot-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.361 s
[INFO] Finished at: 2019-08-03T21:32:42+07:00
[INFO] ------------------------------------------------------------------------

Chạy ứng dụng với maven:

mvn spring-boot:run

Hoặc bạn có thể start ứng dụng với lệnh java -jar:

java -jar fstack-springboot-0.0.1-SNAPSHOT.jar


Mở browser và truy cập: http://localhost:8080/

Source đầy đủ của ví dụ trong bài này có thể download trên Github qua link bên dưới:

https://github.com/thitranthanh/fstack-springboot