这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
为了突出实用性,本文不会照抄官方文档,而是模拟一次常规的开发过程,作为一个Java程序员,开发SpringBoot应用并操作数据库是个很有代表性的场景,因此,本篇会实现下图的效果:在VSCODE桌面版编码,而应用和MySQL(docker版)都运行在CodeSpace服务器上
将上述任务拆分成以下步骤去完成
打开vscode,安装codespaces插件,操作如下图
登录GitHub
点击同意后,会打开浏览器验证身份,再并弹出如下菜单
vscode弹出确认
现在进入了Codespaces管理页面,现在创建一个新的codespace,如下图,选择对应的代码仓库
然后选择分支
现在静候后台服务器初始化,大概几分钟后,页面如下,codespace创建成功,4核8G微软服务器到手,该琢磨怎么用了
为了不影响当前仓库的代码,这里新建一个分支,操作如下图
我这里新建了名为vscode-desktop-tutorial的分支,里面没有任何内容
打开命令面板,输入Add Development Container Configuration Files...然后回车
系统会列出诸多预设环境供我们选择,Java8是现成的,果断选择
选择debian操作系统的版本
Node.js?谢谢,不用了
构建工具选择maven
建议将刚才新增的devcontainer.json和Dockerfile文件提交到GitHub保存,这样下次新建codespace时,因为它们的存在,codespace会根据它们去构建镜像,于是每个新的codespace都会带上之前添加的个性化设置
容器重建完成后,在TERMINAL用maven和docker命令验证,全部符合预期
docker run \
--name mysql \
-p 3306:3306 \
-v /workspaces/java-demo/mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-idt \
mysql:8.0.29 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
docker exec -it mysql /bin/bash
@zq2599 ➜ ~ $ docker exec -it mysql /bin/bash
root@f6a9dcc7fdcd:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 8.0.29 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
# 建数据库
CREATE DATABASE first_db;
# 选中数据库
use first_db;
# 建表
CREATE TABLE IF NOT EXISTS `seller`(
`id` INT UNSIGNED AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`product_num` INT NULL,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
# 新增三条记录
insert into seller (name, product_num) values ('seller1', 1111);
insert into seller (name, product_num) values ('seller2', 2222);
insert into seller (name, product_num) values ('seller3', 3333);
server:
port: 8080
spring:
# 数据源
datasource:
username: root
password: 123456
url: jdbc:mysql://127.0.0.1:3306/first_db?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
# mybatis配置
mybatis:
# 配置文件所在位置
config-location: classpath:mybatis-config.xml
# 映射文件所在位置
mapper-locations: classpath:mappers/*Mapper.xml
# 日志配置
logging:
level:
root: INFO
com:
bolingcavalry:
demo:
mapper: debug
package com.bolingcavalry.demo;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.bolingcavalry.demo.entity.Seller;
import com.bolingcavalry.demo.service.SellerService;
@SpringBootTest
class DemoApplicationTests {
@Autowired
SellerService sellerService;
@Test
void testGetById() {
int id = 1;
Seller seller = sellerService.get(id);
// 判定非空
Assertions.assertNotNull(seller);
// id相等
Assertions.assertEquals(id, seller.getId());
}
}
@RestController
@Slf4j
public class SellerController {
@Autowired
private SellerService sellerService;
@RequestMapping(value = "/seller/{id}", method = RequestMethod.GET)
public Seller get(@PathVariable("id") Integer id) {
log.info("get entity, id=[{}]", id);
return sellerService.get(id);
}
}
至此,一次典型的SpringBoot应用开发和调试过程就完成了,整个过程中vscode作为文本编辑和命令输入的工具,编译、单元测试、运行、docker服务这些都在远程codespace后台运行,下载镜像和jar包也是服务器去做的,实际网速非常理想,本地电脑始终保持低资源消耗,流畅的体验贯穿始终(网络要保持稳定)
希望本篇能给您一些参考,白piao微软,我们一直在努力...
记录人生第一次重装系统之后的数据恢复过程,包括桌面恢复、常用软件下载和属性修改、vscode插件、zotero数据恢复、onenote笔记数据恢复,让重装系统的你不用慌。