Giải đáp thắc mắc về ý nghĩa của các khái niệm JDK, J2SE, J2EE, Spring và EJB

1. Spring Boot là gì ?

Đối với các lập trình viên Java thì Spring Framework không hề xa lạ, Spring mang lại các công cụ tiện lợi xây dựng những ứng dụng web mạnh mẽ, hiệu suất cao đáp ứng nhiều người dùng cùng lúc, đồng thời thỏa mãn nhiều tiêu chí phát triển và bảo trì phần mềm của các doanh nghiệp. Tuy nhiên khó khăn cho các lập trình viên các cấu hình khá phức tạp và có phần rối rắm với các file XML hoặc Annotation, hoặc trong 1 vài trường hơp bạn bắt buộc phải sử dụng cả 2 để đáp ứng được yêu cầu.

Spring Boot được ra đời với mục đích bên cạnh mang lại lợi ích về hiệu suất và sự mạnh mẽ vốn có từ Spring Framework và đồng thời cung cấp  cho Lập trình viên những interface đơn giản hơn cho việc cấu hình. 

 

- Khi so sánh Kiến trúc của Spring cổ điển và Kiến trúc của Spring Boot. Phần cấu hình được di chuyển lên layer trên của Kiến trúc tổng thể, cung cấp cho Lập trình viên 1 interface đơn giản hơn cho việc cấu hình nhưng các thành phần thiết yếu (của Spring) vẫn được cung cấp 1 cách đầy đủ như với kiến trúc Spring Framework cũ.

- Có thể nhiều bạn sẽ đặt câu hỏi rằng: vậy trình bày tới lui nãy giờ, vậy Spring Boot có khác gì với Spring MVC ? Câu trả lời là với Spring Boot, bạn có thể sử dụng được đầy đủ các tính năng của Spring MVC như cấu hình kết nối Database Mapping với Hibernate, sử dụng các validation Constraint cho các form UI hay tạo các View Controller với JSP, ... nhưng việc cấu hình sẽ đơn giản hơn.

Dưới đây là một số tính năng đáng chú ý của Spring Boot:

  • Đóng gói và khởi chạy ứng dụng web với gói JAR. Đối với những bạn đã và đang làm việc với Spring MVC, Tomcat hoặc Jboss thì pattern quen thuộc vẫn là phải build ra gói WAR, copy gói WAR đó lên Server và khởi động. Tuy nhiên với gói JAR Spring Boot, bạn có thể chạy như 1 gói JAR bình thường với câu lệnh:
    java -jar application-001.jar

    Và ngay lập tức chúng ta sẽ có ngay 1 webapp Server với đầy đủ chức năng như gói WAR ngày trước. Spring Boot vẫn hỗ trợ trường hợp bạn muốn build project ra gói WAR để deploy lên các application server. Như vậy chúng ta sẽ không phải tốn công setup Tomcat bởi Spring Boot đã tích hợp sẵn 1 embedded web Server.

  • Có thể định nghĩa các profile khác nhau cho các môi trường: test, staging, production, ..
  • Hỗ trợ nhiều loại file template Engine cho View.
    • JSP (Java Server Page). Xem ví dụ ở đây
    • Thymeleaf. Xem ví dụ ở đây
    • Free Marker

2. Tools sử dụng

  • Java JDK 8
  • Maven 3.2
  • IDE IntelliJ
  • Spring Boot 2.0.5

3. Maven XML

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>thecoderoot.spring.boot</groupId>
    <artifactId>spring-boot-p1</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
    </parent>

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

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


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

</project>

Khi khởi tạo 1 project Spring Boot bạn phải khai báo project của bạn là sub project thừa kế từ project 

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
</parent>

Hiện tại có 2 phiên bản phổ biến của Spring Boot là 2.0.x và 2.1.x, trong đó bản 2.0.x đã được ứng dụng vào nhiều project và kiểm nghiệm trong quá trình sử dụng thực tế cũng như các tài liệu hướng dẫn trên Internet . Với version 2.1.x , các cú pháp cấu hình có nhiều sự thay đổi so với 2.0.x. Chúng tôi khuyến khích các bạn nên sử dụng bản 2.0.5

 

4. Spring Boot Controller

package thecoderoot.example.springboot.p1.controller;

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

@RestController
public class HelloController {

    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }
}

Tương tự như Spring MVC, để khai báo Class trở thành 1 Controller thì bạn dùng @Controller, hoặc thêm @ResponseBody để trở về dữ liệu dạng text. Với Spring Boot, chức năng này được hỗ trợ thêm bởi annotation @RestController tức là các method endpoint trong class đó mặc nhiên đều trả về dữ liệu dạng text mà không cần thêm @ResponseBody.

5. Main Class

package thecoderoot.exmple.springboot;

import java.util.Arrays;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class Application {

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

Khai báo annotation @SpringBootApplication trong class chứa hàm main để khai báo bạn đang sử dụng cấu hình theo kiểu Spring Boot.

 

6.Chạy ứng dụng

Chúng ta sử dụng Maven command để build gói JAR của ứng dụng Web và chạy nó. 

mvn clean install && java -jar target/spring-boot-p1-0.1.0.jar

Khi hoàn tất quá trình build, gói Jar thành phẩm sẽ được đặt trong folder target, tên file Jar được đặt theo artifact-id và version define trong file pom.xml <artifact-id>-<version>.jar. ví dụ:  spring-boot-p1-0.1.0.jar

Chúc các bạn thành công.

AutoCode.VN

creational-patterns-abstract-fa Java Programming