Hướng dẫn tạo app SpringBoot trên Inteliji

Bài hướng dẫn tạo web bằng spring boot cho người mới bắt đầu sử dụng Inteliji IDEA (không dùng NetBean vì nó quá rác). Trong bài viết chỉ đề cập đến Spring Boot, mấy công cụ hay công nghệ bổ trợ như Thymleaf, JPA, Spring Security các bạn hãy đón xem những bài blog sau

1. Spring / Spring Boot là gì

Spring là một FrameWork, mã nguồn mở phổ biến để tạo các ứng dụng chạy trên máy ảo Java (JVM).

Spring Boot là một công cụ giúp phát triển ứng dụng web và dịch vụ vi mô bằng Spring Framework nhanh hơn , dễ dàng hơn thông qua ba khả năng cốt lõi (quên = trượt phỏng vấn):

👉 Khả năng tự động cấu hình

👉 Opinionated approach: cho phép bạn config nhưng theo khuôn khổ nhất định

👉 Khả năng tạo các ứng dụng độc lập

Các tính năng này phối hợp với nhau, cung cấp cho bạn một công cụ cho phép bạn thiết lập ứng dụng dựa trên Spring với cấu hình và thiết lập tối thiểu.

2. Tải Inteliji IDEA

Công cụ giúp bạn lập trình mấy ứng dụng Java mà mình thấy là mượt mà và chuyên nghiệp nhất, recommend cho các bạn nên dùng, ít ra là thử một lần cho biết. Ngoài ra còn có một số IDE khác như Esclipse, NetBean, nhưng ở bài viết này mình chỉ hướng dẫn trên Inteliji

Tải bản full tại đây

3. Tạo Project trên Inteliji bằng Spring Initializr

Ấn Next

 

Đặt tên theo ý bạn

 

Tiếp theo, các bạn chọn vào những thứ mình sẽ dùng cho web, mới bắt đầu thì các bạn chỉ cần chọn những thứ theo mình như: Spring Web, Spring Boot DevTools, LomBok

Tìm kiếm tại ô thứ 1 và chọn thứ cần thiết tại ô thứ 2

 

Chọn thư mục để lưu project và hoàn thành tạo project

4. Hình như làm sai rồi nó sinh ra nguyên một đống File

Bình tĩnh, mình sẽ giải thích từng nội dung trong cái project này

👉 Thư mục src là nơi lưu trữ source code của bạn, mặc định là vậy, đổi ăn lone. Ở đây có hai thư mục con là main và test, nhưng mình là coder chân chính nên không quan trọng thư mục test, quan tâm main thôi nhé

👉 Thư mục src/main/java là nơi lưu Model, Controller của bạn, và bạn sẽ thấy một file Java với tên của Project, file này chỉ có duy nhất 1 hàm main, dùng để khởi động project Spring

👉 Thư mục resources là nơi lưu các file tĩnh như css, js, img và trong này có file application.properties dùng để config toàn bộ project Spring của bạn

👉 Bên ngoài cùng chúng ta sẽ thấy file pom.xml, file này dùng để khai báo những thư viện cần dùng và file này nói cho Inteliji biết project của chúng ta sẽ được chạy như thế nào, dựa vào những gì, nó bao gồm

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>

Khai báo cái này để sau này dùng thư viện của spring, file pom chỉ lấy từ thằng này về cho tiện, khỏi khai báo phiên bản

 

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

Đây là 1 thư viện mà chúng ta sẽ dùng, thư viện này dùng chung với plugin bên dưới để khởi động project spring

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

 

5. Giải thích pom.xml

Muốn Project chạy ngon hơn thì các bạn có thể thêm vào một số thư viện sau, nhưng không phải là lên mạng tải file jar về xong import vô như cách các bạn được học trên trường:

Bước 1. Chúng ta sẽ request luôn thư viện từ thằng Spring Parent như mình đã nói ở trên, hoặc nếu thằng này ko có thì các bạn có thể lên mạng tìm kiếm với từ khóa: tên thư viện + 'maven dependency'

Bước 2. Copy hết đống xml họ đưa rồi dán vào file pom.xml

Bước 3. Nó sẽ báo đỏ, đừng lo, ấn nút này để reload lại, nếu reload lại mà vẫn báo đỏ thì kiểm tra mình gõ đúng chưa

Các thư viện nên thêm vào, kèm giải thích:

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

JSTL: Ai từng code web bằng Java chắc điều biết cái thư viện này, khỏi nhắc

 

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

Dùng JSP thì phải có cái này để xử lí đống jsp đó, không là chạy web nó không biến hóa jsp ra html được đâu

 

       <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

Dùng Anonation để tự sinh hàm Getter/Setter

 

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

Giúp các bạn Live Edit, không cần khởi động lại Spring mỗi lần để test. Để có thể Live Edit, sau khi cài thư viện này xong, các bạn làm theo ảnh bên dưới để Edit Configuration

6. Tạo View (Copy đại file JSP nào đó cũng được)

Đây là cấu trúc Project mẫu hiện tại, các views (file render ra thành trang web để cho người dùng tương tác, thấy được) thì các bạn có thể đặt nó ở bất kỳ đâu trong project này, nhưng các bạn phải biết cách cấu hình làm sao cho SpringInteliji hiểu ý của bạn

👉 Đầu tiên, vì mình đang code trên Inteliji, nên mình sẽ làm thêm 1 bước là khai báo module web cho Inteliji biết, bằng cách chọn File trên thanh công cụ -> Project Structure, sau đó thêm thư mục /webapp vào module web như hình dưới

👉 Tiếp theo, giả sử mình muốn đặt views là các file jsp, nằm bên trong thư mục webapp/views , đầu tiên mình sẽ tạo các thư mục còn thiếu này với tên tương ứng như hình trên, sau đó mình sẽ khai báo cho Spring hiểu rằng view của mình hiện tại đang nằm trong đó bằng các thêm vào file application.properties 2 dòng sau

spring.mvc.view.prefix=/views/
spring.mvc.view.suffix=.jsp

 

Việc Config đã xong, bây giờ các bạn có thể tạo bất kỳ views jsp nào tại thư mục đã khai báo, ví dụ như tạo thêm một file home.jsp với nội dung

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Spring</title>
</head>
<body>

    <c:forEach var="i" begin="1" end="5" varStatus="count">
        <h2>${count.index}: Hello World</h2>
        <br><hr><br>
    </c:forEach>

</body>
</html>

7. Tạo Controller

Vì Spring Boot hiểu bạn bằng các Annotation, nên việc tạo Controller đơn giản hơn rất nhiều, các bạn sẽ tạo một file java, đặt bất cứ đâu bạn muốn bên trong thư mục source code của bạn, ở đây là src/main/... Và sử dụng Annotation @Controller để Spring hiểu rằng file java đó chính là một Controller và sẽ quét các đường link request khi bạn khởi chạy project Spring, như ví dụ bên dưới là một file Controller đơn giản nhất kèm chú thích

 

package com.sat.satellite.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

//Đây là một Controller
@Controller
public class HomeController {

    //Nếu đường link là "/" hay "/index" thì thực hiện hàm này, hàm trả về view (GET)
    @RequestMapping(value = { "/", "/index" },method = RequestMethod.GET)
    public String index(Model model) {
        
        //Thêm một số Dynamic Data vào view, dùng bằng cách sử dụng JSTL hoặc Thymleaft tương tự như bên Strut
        String message = "Hello Spring Boot + JSP";
        model.addAttribute("Bruh", message);
        
        //Trả về view có tên là home, postfix ko cần thêm vì đã kahi báo trong file application.properties
        return "home";

    }

}

 

8. Bạn đã là master spring boot

Rồi, chạy thử bằng cách xem lại phần 4 bên trên và vào đường link localhost:8080 , vì có dùng thư viện thêm nên bạn có thể Live Edit ở chế độ chạy Run hoặc Debug điều được, thành quả như bên dưới, source code mẫu bên dưới nữa, hết

 

Xem Source Code github tại đây

Cảm ơn các bạn đã tham khảo, By Tín

 


  RATE: 4.6 

  4904 VIEW


chưa có bình luận nào ...
BÀI VIẾT LIÊN QUAN
So sánh Apollo và NestJS: 5 điều bạn cần biết

Nếu bạn đang tìm kiếm một framework phát triển ứng dụng web với GraphQL, hãy xem xét sử dụng Apollo hoặc NestJS. Bài viết này so sánh cả hai framework và giúp bạn tìm hiểu 5 điều cần biết để có thể lựa chọn được sự lựa chọn phù hợp nhất cho dự án của bạn.

BÀI VIẾT LIÊN QUAN
Deploy và Config Domain cho 1 ứng dụng Spring đơn giản trên Cloud VPS sử dụng Ngnix và Portainer

Bằng các công cụ như Docker, Cloudflare, Ngnix, Portainer. Bài viết giúp các bạn hiểu được ý nghĩa của việc sử dụng VPS, cách thức để giúp ứng dụng của bạn được truy cập ở mọi nơi

BÀI VIẾT LIÊN QUAN
Primitive và Non-Primitive Data Types trong JavaScript

Ấy từ từ, thằng admin viết bài ngu rồi, vậy tại sao nói string là bất biến mà tôi vẫn thay đổi được giá trị của nó đây này bạn. Cùng tìm hiểu các kiểu dữ liệu Primitive và Non-Primitive trong JavaScript để xem cách sử dụng cũng như ứng dụng của nó nhé.