Visual Studio Code 調試 SpringBoot


Build Anything with Spring Boot:Spring Boot is the starting point for building all Spring-based applications. Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring.

Spring Boot

大概意思翻譯一下:Spring Boot 是所有基於 Spring 開發的項目的起點。Spring Boot 的設計是為了讓你盡可能快的跑起來 Spring 應用程序並且盡可能減少你的配置文件。這些都不再多說,Java 的Spring Boot我個人來說還是比較看好的。

Visual Studio Code (簡稱 VS Code / VSC) 是一款免費開源的現代化輕量級代碼編輯器,支持幾乎所有主流的開發語言的語法高亮、智能代碼補全、自定義熱鍵、括號匹配、代碼片段、代碼對比 Diff、GIT 等特性,支持插件擴展,並針對網頁開發和雲端應用開發做了優化。軟件跨平台支持 Win、Mac 以及 Linux。他最強大的地方是微軟的Language Server,這貨可以通過插件的方法支持JavaC#PythonTypescriptPHP....

說了這么多的廢話,開始引出本文的重點:Spring Boot調試

插件安裝

在使用之前確保你已經安裝了Java環境、安裝了Vscode,然后安裝下面的幾個插件,至少需要這么幾個插件:

Java 環境:
Java Extension Pack
Java Language Support
Debuger for Java

Spring boot 環境:
Spring Boot Extension Pack
Spring Boot Tools
Spring Initializr Java Support

Maven 環境:
Maven for Java

生成項目

開始生成項目:

Ctrl+Shift+P,輸入Spring,選擇Maven項目(我個人比較喜歡Maven),然后選擇Java,輸入項目名稱假設為com.mx,然后輸入項目名稱假設為spider,然后我一般選擇2.0.3,由於是測試項目,我只選擇一個DevTools,然后選擇目錄生成項目,然后打開項目Open it

需要注意一點,項目生成之后請先運行一下maven指令,下載必要的數據包。

然后下面就是激動人心的時刻了!

擼代碼

測試代碼是一個簡單爬蟲程序,爬取博客園博客數據。

首先在pom.xml文件中添加我們用到的包jsoup

<dependency>
  <!-- jsoup HTML parser library @ https://jsoup.org/ -->
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.11.3</version>
</dependency>

然后我們首先找到src/main/java/com/mx/spider/DemoApplication.java文件,修改Spring Boot的啟動行。

SpringApplication.run(DemoApplication.class, args);//刪除啟動項
System.out.println("Hello world!");

然后點擊調試蜘蛛圖標,直接點擊調試(注意直接點擊,先別配置,使用Vscode默認配置足以!),首次將會非常慢。結合我的原因,應該是maven下載數據包和初始化引擎所致。

代碼調試

點擊運行,媽耶!好神奇,環境好了!

Hello world

來點復雜的調試

下面來點復雜的調試,首先我們創建一個模型Blog,一個控制器BlogSpiderController,然后開始下面的工作:

package com.mx.models;

public class Blog {
    private String _url;
    private String _title;
    private String _detail;

    public String getUrl() {
        return _url;
    }

    public String getTitle() {
        return _title;
    }

    public String getDetail() {
        return _detail;
    }

    public void setUrl(String url) {
        if (url.length() > 0 && (url.startsWith("http://") || url.startsWith("https://")))
            _url = url;
    }

    public void setTitle(String title) {
        if (title.length() > 0)
            _title = title;
    }

    public void setDetail(String detial) {
        if (detial.length() > 0)
            _detail = detial;
    }
}
package com.mx.controllers;

import java.util.ArrayList;
import java.util.List;

import com.mx.models.Blog;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class BlogSpiderController {
    public void Run() throws Exception {
        Document doc = null;

        for (int i = 1; i <= 10; i++) {
            doc = getUrlDocument("https://www.cnblogs.com/#p" + i);

            for (Blog blog : getBlogListByDocument(doc)) {
                bindBlogDetail(blog);
                System.out.println(blog);
            }
        }
        System.out.println("Task Finished!");
    }

    public Document getUrlDocument(String url) throws Exception {
        Document doc = Jsoup.connect(url).get();
        return doc;
    }

    public List<Blog> getBlogListByDocument(Document doc) throws Exception{
        List<Blog> list = new ArrayList<Blog>();
        Element pageList = doc.getElementById("post_list");
        Elements blogs = pageList.getElementsByClass("post_item");

        Blog b;
        for (Element blog : blogs) {
            b = new Blog();
            b.setTitle(blog.getElementsByTag("h3").text());
            b.setUrl(blog.getElementsByClass("titlelnk").get(0).attr("href"));
            b.setSumary(blog.getElementsByClass("post_item_summary").text());
            list.add(b);
        }

        return list;
    }

    public void bindBlogDetail( Blog blog) throws Exception{
        //Do data bind
    }
}

好了代碼部分先寫這么多,上文中綁定詳細信息部分我不再寫,因為幾個步驟已經滿足調試需求。

斷點調試

  1. 按照vs習慣,下設斷點。

同樣的,在代碼左側雙擊下設斷點,在斷點監視器也可以隨時修改斷點。

斷點設置

  1. 點擊調試

我的習慣是查看這幾部分:
1). 變量屬性
2). 堆棧調用情況
3). 變量變化情況

分別從下面幾塊兒查看數據。

變量域

  1. 查看調試信息

調試信息

調試信息

總結

程序結果

本文主要使用Spring Boot Console程序演示Spring Boot的調試過程,但是Spring Boot如果是面向於Web端或許更加合適,但是Web代碼編寫相對復雜,所以選用了Console來演示調試過程。

【源代碼】:YunFile


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM