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 开发的项目的起点。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下载数据包和初始化引擎所致。

代码调试

点击运行,妈耶!好神奇,环境好了!

来点复杂的调试

下面来点复杂的调试,首先我们创建一个模型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

Visual Studio Code 调试 SpringBoot的更多相关文章

  1. Visual Studio Code 调试 PHP

    Visual Studio Code 调试 PHP 2018/12/4 更新 Nginx + php-cgi.exe 下与 Visual Studio Code 配合调试 必需环境 Visual St ...

  2. Visual Studio Code调试node.js:无法在PATH上找到运行时的node

    首先,环境变量Path中加入nodejs的路径: 验证nodejs是否已经加入环境变量: 接着,重新启动Visual Studio Code, 试一下,是不是好了~   附录:Visual Studi ...

  3. Visual Studio Code调试electron主进程

    Visual Studio Code调试electron主进程 作者: jekkay 分类: electron 发布时间: 2017-06-11 14:56  一·概述 此文原出自[水滴石]: htt ...

  4. windows下用visual studio code 调试go代码

    http://www.golangtc.com/download下载安装包或压缩包 配置环境变量 配置GOROOT: 配置PATH:在PATH最后添加 配置GOPATH:GOPATH的作用请自行百度, ...

  5. 用 Visual Studio Code 调试 Node.js

    环境: Visual Studio Code  Node.js 1. 关闭运行中的程序 2.打开入口文件,我这里的入口文件为 app.js 3.点击左侧菜单栏的 debug 按钮 4.点击运行按钮 5 ...

  6. 使用Visual Studio Code调试基于ActionScript的LayaAir HTML5游戏

    使用Visual Studio Code(VS Code)调试的优势 使用VS Code我们可以极大地提高LayaAir Html5游戏项目的调试效率,VS Code的优势有以下几点: 在发生Java ...

  7. visual studio code 调试nodejs 配置简单HTTP服务器

    介绍 Visual Studio Code是一个轻量级的Web集成开发环境on Linux,Mac and Windows,特别是作为前端人员来了, 多了一个可供选择的生产力工具IDE,调试js代码简 ...

  8. Go学习笔记(二)搭建Visual Studio Code调试环境

    上一篇 Go学习笔记(一)安装Go语言环境 安装Visual Studio Code 这是目前我觉得最好用的文本编辑器了, https://code.visualstudio.com/ 中间有几部确认 ...

  9. 使用visual studio code调试php代码

    这回使用visual studio code折腾php代码的调试,又是一顿折腾,无论如何都进不了断点.好在就要放弃使用visual studio code工具的时候,折腾好了,汗~ 这里把步骤记录下来 ...

随机推荐

  1. SpringMVC 一次请求加载Controller多次

    原因之一:HTML页面中 css样式 background:url() 或 img.iframe标签 src设置为空 例:<div style="background:url()&qu ...

  2. vue前端项目优化策略

    vue前端项目有什么优化策略? .生成打包报告.(可以发现一些问题,并进行解决)2.使用第三方库启用CDN加载3.使用Element-ui的话,按需加载组件4.使用路由懒加载 生成打包报告: .生成打 ...

  3. BZOJ 2039 / Luogu P1791 [2009国家集训队]employ人员雇佣 (最小割)

    题面 BZOJ传送门 Luogu传送门 分析 考虑如何最小割建图,因为这仍然是二元关系,我们可以通过解方程来确定怎么建图,具体参考论文 <<浅析一类最小割问题 湖南师大附中 彭天翼> ...

  4. 重置一发LCT模板

    加边.删边.单点修改.链上异或和 #include <bits/stdc++.h> using namespace std; inline void read(int &num) ...

  5. MNIST 数据集介绍

    在学习机器学习的时候,首要的任务的就是准备一份通用的数据集,方便与其他的算法进行比较. MNIST数据集是一个手写数字数据集,每一张图片都是0到9中的单个数字,比如下面几个:     MNIST数据库 ...

  6. [Luogu P4145] 上帝造题的七分钟2 / 花神游历各国

    题目链接 题目简要:我们需要一个能支持区间内每一个数开方以及区间求和的数据结构. 解题思路:说道区间修改区间查询,第一个想到的当然就是分块线段树.数据范围要用long long.本来我是看到区间这两个 ...

  7. 018_linux驱动之_阻塞和非阻塞

    阻塞操作     是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后再进行操作. 被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被满足.   非阻塞操作   进程 ...

  8. char 类型的数组转换到CSting

    首先,字符串“abc”在CString的保存格式是‘a’,'\0','b','\0','c','\0','\0','\0'; 从中可以看出它是以‘\0’,'\0',结束的. 当char ch[6]: ...

  9. rxjs入门指南

    使用场景 在复杂的,频繁的异步请求场景,使用rxjs. 在依赖的多个异步数据,决定渲染的情景,使用rxjs. 总之:在前台频繁的.大量的.和后台数据交互的复杂项目里面,使用rxjs(web端,iOS, ...

  10. c++ 容器切片反转次序(拷贝到新容器)

    code: // rotate_copy algorithm example #include <iostream> // cout #include <algorithm> ...