提交 ce2ccbc7 编写于 作者: W weixin_43814374

Mon Aug 28 11:36:01 CST 2023 inscode

上级 0072a47b
run = "mvn -Dmaven.test.skip=true spring-boot:run"
language = "java"
[debugger]
program = "Main"
文件已添加
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<version>2.7.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.lhstack</groupId>
<artifactId>template</artifactId>
<version>1.0-SNAPSHOT</version>
<groupId>com.test</groupId>
<artifactId>springboot-template</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-template</name>
<description>springboot-template</description>
<packaging>jar</packaging>
<properties>
<java.version>8</java.version>
<bcprov.version>1.64</bcprov.version>
<rxjava.version>2.2.21</rxjava.version>
<java.version>17</java.version>
</properties>
<dependencies>
<!--springMVC-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>${bcprov.version}</version>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.reactivex.rxjava2</groupId>
<artifactId>rxjava</artifactId>
<version>${rxjava.version}</version>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--druid starter-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--mybatis-->
<!--<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>-->
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<!--swagger3-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<!-- knife4j -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
......@@ -48,8 +94,49 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.project.lombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
<profiles>
<!--开发环境-->
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profileName>dev</profileName>
</properties>
</profile>
<!--测试环境-->
<profile>
<id>test</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<profileName>test</profileName>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>prod</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<profileName>prod</profileName>
</properties>
</profile>
</profiles>
</project>
package com.lhstack;
import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11Nio2Protocol;
import org.apache.coyote.http11.Http11Processor;
import org.apache.tomcat.util.buf.MessageBytes;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.apache.coyote.Processor;
@SpringBootApplication
public class TemplateApplication {
public static void main(String[] args) {
SpringApplication.run(TemplateApplication.class, args);
}
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> webServerFactoryCustomizer(){
return serverFactory -> {
Connector connector = new Connector(new Http11Nio2Protocol() {
@Override
protected Processor createProcessor() {
return new Http11Processor(this, this.getAdapter()) {
@Override
protected void parseHost(MessageBytes valueMB) {
MessageBytes messageBytes = MessageBytes.newInstance();
String hostname = valueMB.toString();
messageBytes.setString(hostname.replace("_", "-"));
messageBytes.toBytes();
super.parseHost(messageBytes);
}
};
}
});
connector.setPort(8080);
serverFactory.addAdditionalTomcatConnectors(connector);
};
}
}
package com.lhstack.controller;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import org.bouncycastle.util.encoders.Base64;
import org.bouncycastle.util.encoders.Hex;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.lhstack.utils.Aes;
import io.reactivex.Single;
import io.reactivex.exceptions.CompositeException;
@RestController
@RequestMapping("crypto")
public class CryptoController {
@Value("${aes.key:}")
private String defaultAesKey;
@Value("${aes.iv:}")
private String defaultAesIv;
@PostMapping("decrypt")
public Single<String> decrypt(@RequestBody Map<String,String> body){
String aesKey = body.getOrDefault("key", defaultAesKey);
String aesIv = body.getOrDefault("iv", defaultAesIv);
byte[] content = body.getOrDefault("content","").getBytes();
return Single
.fromCallable(() -> Aes.decrypt(aesKey, aesIv, Base64.decode(content)))
.onErrorResumeNext(e ->Single.just(Aes.decrypt(aesKey, aesIv, Hex.decode(content))))
.map(bytes -> new String(bytes,StandardCharsets.UTF_8))
.onErrorReturn(e -> {
if(e instanceof CompositeException){
CompositeException compositeException = (CompositeException)e;
return compositeException.getExceptions().stream().map(item -> String.format("%s=%s",item.getClass().getSimpleName(),item.getMessage())).collect(Collectors.joining(","));
}
return e.getMessage();
});
}
@GetMapping
public Single<String> test(){
return Single.defer(() -> {
return Single.just("hello world");
});
}
}
package com.lhstack.utils;
import java.security.Security;
import java.util.Optional;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.springframework.util.StringUtils;
public class Aes {
private static final String CBC = "AES/CBC/PKCS7Padding";
private static final String ECB = "AES/ECB/PKCS7Padding";
static {
BouncyCastleProvider bouncyCastleProvider = new BouncyCastleProvider();
String name = bouncyCastleProvider.getName();
if(Security.getProvider(name) == null){
Security.addProvider(bouncyCastleProvider);
}
}
public static byte[] decrypt(String key,String iv,byte[] encryptBytes){
try{
Cipher cipher = StringUtils.hasText(iv) ? Cipher.getInstance(CBC) : Cipher.getInstance(ECB);
if(StringUtils.hasText(iv)){
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key.getBytes(), "AES"), new IvParameterSpec(iv.getBytes()));
}else {
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key.getBytes(), "AES"));
}
return cipher.doFinal(encryptBytes);
}catch(Exception e){
throw new RuntimeException(e);
}
}
public static byte[] encrypt(String key,String iv,byte[] bytes){
try{
Cipher cipher = StringUtils.hasText(iv) ? Cipher.getInstance(CBC) : Cipher.getInstance(ECB);
if(StringUtils.hasText(iv)){
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key.getBytes(), "AES"), new IvParameterSpec(iv.getBytes()));
}else {
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key.getBytes(), "AES"));
}
return cipher.doFinal(bytes);
}catch(Exception e){
throw new RuntimeException(e);
}
}
}
package com.template;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(scanBasePackages = {"com.skygod.base", "com.skygod.usermanagement"})
public class TemplateApplication {
public static void main(String[] args) {
SpringApplication.run(TemplateApplication.class, args);
}
}
package com.template.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan(basePackages = "com.template.*.mapper")
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
package com.template.config;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
@EnableKnife4j
public class SwaggerConfig {
@Bean
public Docket getDocket(){
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.apiInfo(getApiInfo()) //指定文档的“封面"信息
.enable(true)//是否启动swagger 默认为true ,如果为false,则Swagger不能再浏览器中访问
.select() //监控哪些接口
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //指定文档扫描范围
.paths(PathSelectors.any()) //指定生成api的路径
.build();
return docket;
}
public ApiInfo getApiInfo(){
ApiInfo apiInfo = new ApiInfoBuilder()
.title("测试")
.description("测试文档")
.version("v1.0")
.contact(new Contact("y_initiate", "", "1292989480@qq.com"))
.build();
return apiInfo;
}
}
package com.lhstack.config;
package com.template.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
......
package com.template.controller;
public class TestController {
}
server:
servlet:
context-path: /dev
\ No newline at end of file
server:
servlet:
context-path: /prod
\ No newline at end of file
server:
servlet:
context-path: /test
\ No newline at end of file
aes:
key: axiwlazlf1456175
iv: 114aqws431@#!%_+
server:
port: 8081
\ No newline at end of file
因为 它太大了无法显示 source diff 。你可以改为 查看blob
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Decrypt</title>
<link rel="stylesheet" href="./css/element-ui.css">
<script src="./js/vue.js"></script>
<script src="./js/vue-json-view.js"></script>
<script src="./js/element-ui.js"></script>
<style>
#input {
width: 99.7%;
height: 300px;
border: 1px solid gray;
overflow-y: auto;
resize: none;
}
.d-btn {
width: 100px;
height: 35px;
margin-bottom: 5px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.d-btn-group {
display: flex;
justify-content: space-around;
width: 1200px;
float: right;
}
#output {
width: 99.9%;
height: 350px;
border: 1px solid gray;
overflow-y: auto;
resize: none;
color: #8c6325
}
.d-input {
width: 200px;
height: 20px;
}
.d-input-group {
width: 300px;
display: flex;
justify-content: flex-end;
align-items: center;
}
</style>
</head>
<body>
<div id="app">
<div style="display: flex;justify-content: space-between">
<label for="input" style="color: darkgoldenrod;margin-bottom: 10px;display: block">
请输入需要解密的内容
</label>
</div>
<textarea ref="input" id="input" v-model="encryptText"></textarea>
<div ref="operate" style="width: 100%;display: flex;justify-content: space-between">
<div style="height: 35px;display: flex;flex-direction: column;justify-content: center;">
<label style="color: darkgoldenrod;display: block;width: 100px">
解密结果
</label>
</div>
<div class="d-btn-group">
<div style="display: flex;justify-content: space-around;width: 550px">
<div class="d-input-group">
<label for="aesKey" style="margin-right: 5px">AesKey:</label>
<input id="aesKey" v-model="aesKey" type="text" class="el-input d-input">
</div>
<div class="d-input-group" style="margin-right: 10px">
<label for="aesIv" style="margin-right: 5px">AesIv:</label>
<input id="aesIv" v-model="aesIv" type="text" class="el-input d-input">
</div>
</div>
<div class="d-btn" style="margin-right: 10px;">
<el-select v-model="theme" size="small" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<button class="el-button el-button--info d-btn" id="copy" @click="duplication">复制内容</button>
<button class="el-button el-button--info d-btn" @click="closed=true" id="collapse">收起</button>
<button class="el-button el-button--info d-btn" @click="closed=false" id="expansion">展开</button>
<button class="el-button el-button--warning d-btn" @click="clean" id="clean">清空内容</button>
<button class="el-button el-button--primary d-btn" id="decrypt" @click="decrypt">解密</button>
</div>
</div>
<div id="output" ref="output">
<json-viewer v-show="isJson" :closed="closed" :theme="theme" :deep="5" :data="jsonData"></json-viewer>
<span v-show="!isJson" v-text="jsonData.data"></span>
</div>
</div>
</body>
<script>
let app = new Vue({
el: "#app",
data() {
return {
jsonData: {},
closed: false,
aesKey: "",
aesIv: "",
encryptText: "9GVtgT5fzydU1O595W+0fIPRew4IFoRUUijxalwx/pHe8ONGN2qvIIwah9bC0oj7QrcdrGfxO9klqwlc7ntUOantY5vb65DJDolUmX/RyU4A5T9DRD5I3tqn2pmaK3EjsSsba+FScfeLq5HTGM258OW2X0ryyPp7iw2s/anGlzw=",
theme: "default",
output: "",
operate: "",
isJson: false,
input: "",
options: [
{
label:"default",
value:""
},{
label: "vs-code",
value: "vs-code"
},{
label: "one-dark",
value: "one-dark"
}
]
}
},
watch:{
"theme": (newV,old) => {
if(!newV){
this.output.style.background = "#fff"
this.input.style.background = "#fff"
if(!this.isJson){
this.output.style.color = "#8c6325"
this.input.style.color = "#8c6325"
}
}else if(newV === "vs-code"){
this.output.style.background = "#1e1e1e"
this.input.style.background = "#1e1e1e"
if(!this.isJson){
this.output.style.color = "#a9dbfb"
this.input.style.color = "#a9dbfb"
}
}else if(newV === "one-dark"){
this.output.style.background = "#292c33"
this.input.style.background = "#292c33"
if(!this.isJson){
this.output.style.color = "#d27277"
this.input.style.color = "#d27277"
}
}
}
},
mounted(){
this.output = this.$refs.output
this.input = this.$refs.input
this.operate = this.$refs.operate
if(window.innerWidth < 1300){
this.output.style.width = (this.operate.scrollWidth - 10) + "px"
this.input.style.width = (this.operate.scrollWidth - 14.5) + "px"
}
addEventListener("resize",() => {
if(window.innerWidth < 1300){
this.output.style.width = (this.operate.scrollWidth - 10) + "px"
this.input.style.width = (this.operate.scrollWidth - 14.5) + "px"
}else {
this.output.style.width = "99.9%"
this.input.style.width = "99.7%"
}
})
},
methods: {
clean() {
this.jsonData = {}
this.encryptText = ""
this.isJson = false
},
duplication() {
if (this.jsonData && Object.keys(this.jsonData).length > 0) {
let input = document.createElement("textarea");
input.value = !this.isJson ? this.jsonData.data : JSON.stringify(this.jsonData,null,2)
document.body.appendChild(input);
input.select();
document.execCommand("copy");
document.body.removeChild(input);
this.$message({
message:"复制成功",
type:"success"
})
}
},
async decrypt() {
if (this.encryptText && this.encryptText.trim()) {
let data = {
"content": this.encryptText
}
console.log(this.aesKey)
if (this.aesKey && this.aesKey.trim()) {
data.key = this.aesKey
}
if (this.aesIv && this.aesIv.trim()) {
data.iv = this.aesIv
}
let resp = await fetch("/crypto/decrypt", {
method: "POST",
body: JSON.stringify(data),
headers: {
"Content-Type": "application/json"
}
})
let text = await resp.text()
try{
this.jsonData = JSON.parse(text)
this.isJson = true
}catch (e){
this.isJson = false
this.jsonData = {
data: text
}
}
} else {
this.$message({
message:"请输入需要解密的内容",
type: "warning"
})
}
}
},
components: {
"json-viewer": window['vue-json-view'].default
}
})
</script>
</html>
\ No newline at end of file
此差异已折叠。
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("vue-json-view",[],t):"object"==typeof exports?exports["vue-json-view"]=t():e["vue-json-view"]=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=1)}([function(e,t,n){"use strict";var o=n(9);t.a=o.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n(2);t.default=o.a},function(e,t,n){"use strict";function o(e){n(3)}var i=n(0),r=n(10),s=n(8),a=o,l=s(i.a,r.a,!1,a,"data-v-613ef595",null);t.a=l.exports},function(e,t,n){var o=n(4);"string"==typeof o&&(o=[[e.i,o,""]]),o.locals&&(e.exports=o.locals);n(6)("3277a7a2",o,!0,{})},function(e,t,n){t=e.exports=n(5)(!1),t.push([e.i,".json-view-container[data-v-613ef595]{background-color:#fff}.json-view-container.deep-1[data-v-613ef595]{padding-right:10px}.json-view-container .json-view[data-v-613ef595]{position:relative;display:block;width:100%;height:100%;white-space:nowrap;padding-left:2rem;box-sizing:border-box;font-family:Consolas!important;cursor:default}.json-view-container .json-view .json-note[data-v-613ef595]{color:#909399;font-size:12px;font-style:italic}.json-view-container .json-view .json-key[data-v-613ef595]{color:#8c6325}.json-view-container .json-view .json-value[data-v-613ef595]{display:inline-block;color:#57b73b;word-break:break-all;white-space:normal}.json-view-container .json-view .json-value.number[data-v-613ef595]{color:#2d8cf0}.json-view-container .json-view .json-value.string[data-v-613ef595]{color:#57b73b}.json-view-container .json-view .json-value.boolean[data-v-613ef595],.json-view-container .json-view .json-value.null[data-v-613ef595]{color:#eb3324}.json-view-container .json-view .json-item[data-v-613ef595]{margin:0;padding-left:2rem;display:flex}.json-view-container .json-view .first-line[data-v-613ef595]{padding:0;margin:0}.json-view-container .json-view .first-line.pointer[data-v-613ef595]{cursor:pointer!important}.json-view-container .json-view .json-body[data-v-613ef595]{position:relative;padding:0;margin:0}.json-view-container .json-view .json-body .base-line[data-v-613ef595]{position:absolute;height:100%;border-left:1px dashed #bbb;top:0;left:2px}.json-view-container .json-view .last-line[data-v-613ef595]{padding:0;margin:0}.json-view-container .json-view .angle[data-v-613ef595]{position:absolute;display:block;cursor:pointer;float:left;width:20px;text-align:center;left:12px}.json-view-container.one-dark[data-v-613ef595]{background-color:#292c33}.json-view-container.one-dark .json-view[data-v-613ef595]{font-family:Menlo,Consolas,Courier New,Courier,FreeMono,monospace!important}.json-view-container.one-dark .json-view .json-note[data-v-613ef595]{color:#909399;font-size:12px;font-style:italic}.json-view-container.one-dark .json-view .json-key[data-v-613ef595]{color:#d27277}.json-view-container.one-dark .json-view .json-value[data-v-613ef595]{color:#c6937c}.json-view-container.one-dark .json-view .json-value.number[data-v-613ef595]{color:#bacdab}.json-view-container.one-dark .json-view .json-value.string[data-v-613ef595]{color:#c6937c}.json-view-container.one-dark .json-view .json-value.boolean[data-v-613ef595],.json-view-container.one-dark .json-view .json-value.null[data-v-613ef595]{color:#659bd1}.json-view-container.one-dark .json-view .first-line[data-v-613ef595]{color:#acb2be}.json-view-container.one-dark .json-view .json-body .base-line[data-v-613ef595]{border-left:1px solid #3c4047}.json-view-container.one-dark .json-view .json-item[data-v-613ef595],.json-view-container.one-dark .json-view .last-line[data-v-613ef595]{color:#acb2be}.json-view-container.vs-code[data-v-613ef595]{background-color:#1e1e1e}.json-view-container.vs-code .json-view[data-v-613ef595]{font-family:Menlo,Consolas,Courier New,Courier,FreeMono,monospace!important}.json-view-container.vs-code .json-view .json-note[data-v-613ef595]{color:#909399;font-size:12px;font-style:italic}.json-view-container.vs-code .json-view .json-key[data-v-613ef595]{color:#a9dbfb}.json-view-container.vs-code .json-view .json-value[data-v-613ef595]{color:#c6937c}.json-view-container.vs-code .json-view .first-line[data-v-613ef595]{color:#d4d4d4}.json-view-container.vs-code .json-view .json-body .base-line[data-v-613ef595]{border-left:1px solid #404040}.json-view-container.vs-code .json-view .json-item[data-v-613ef595],.json-view-container.vs-code .json-view .last-line[data-v-613ef595]{color:#d4d4d4}",""])},function(e,t){function n(e,t){var n=e[1]||"",i=e[3];if(!i)return n;if(t&&"function"==typeof btoa){var r=o(i);return[n].concat(i.sources.map(function(e){return"/*# sourceURL="+i.sourceRoot+e+" */"})).concat([r]).join("\n")}return[n].join("\n")}function o(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var o=n(t,e);return t[2]?"@media "+t[2]+"{"+o+"}":o}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var o={},i=0;i<this.length;i++){var r=this[i][0];"number"==typeof r&&(o[r]=!0)}for(i=0;i<e.length;i++){var s=e[i];"number"==typeof s[0]&&o[s[0]]||(n&&!s[2]?s[2]=n:n&&(s[2]="("+s[2]+") and ("+n+")"),t.push(s))}},t}},function(e,t,n){function o(e){for(var t=0;t<e.length;t++){var n=e[t],o=d[n.id];if(o){o.refs++;for(var i=0;i<o.parts.length;i++)o.parts[i](n.parts[i]);for(;i<n.parts.length;i++)o.parts.push(r(n.parts[i]));o.parts.length>n.parts.length&&(o.parts.length=n.parts.length)}else{for(var s=[],i=0;i<n.parts.length;i++)s.push(r(n.parts[i]));d[n.id]={id:n.id,refs:1,parts:s}}}}function i(){var e=document.createElement("style");return e.type="text/css",v.appendChild(e),e}function r(e){var t,n,o=document.querySelector("style["+g+'~="'+e.id+'"]');if(o){if(p)return h;o.parentNode.removeChild(o)}if(m){var r=f++;o=u||(u=i()),t=s.bind(null,o,r,!1),n=s.bind(null,o,r,!0)}else o=i(),t=a.bind(null,o),n=function(){o.parentNode.removeChild(o)};return t(e),function(o){if(o){if(o.css===e.css&&o.media===e.media&&o.sourceMap===e.sourceMap)return;t(e=o)}else n()}}function s(e,t,n,o){var i=n?"":o.css;if(e.styleSheet)e.styleSheet.cssText=y(t,i);else{var r=document.createTextNode(i),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(r,s[t]):e.appendChild(r)}}function a(e,t){var n=t.css,o=t.media,i=t.sourceMap;if(o&&e.setAttribute("media",o),j.ssrId&&e.setAttribute(g,t.id),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var l="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!l)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var c=n(7),d={},v=l&&(document.head||document.getElementsByTagName("head")[0]),u=null,f=0,p=!1,h=function(){},j=null,g="data-vue-ssr-id",m="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());e.exports=function(e,t,n,i){p=n,j=i||{};var r=c(e,t);return o(r),function(t){for(var n=[],i=0;i<r.length;i++){var s=r[i],a=d[s.id];a.refs--,n.push(a)}t?(r=c(e,t),o(r)):r=[];for(var i=0;i<n.length;i++){var a=n[i];if(0===a.refs){for(var l=0;l<a.parts.length;l++)a.parts[l]();delete d[a.id]}}}};var y=function(){var e=[];return function(t,n){return e[t]=n,e.filter(Boolean).join("\n")}}()},function(e,t){e.exports=function(e,t){for(var n=[],o={},i=0;i<t.length;i++){var r=t[i],s=r[0],a=r[1],l=r[2],c=r[3],d={id:e+":"+i,css:a,media:l,sourceMap:c};o[s]?o[s].parts.push(d):n.push(o[s]={id:s,parts:[d]})}return n}},function(e,t){e.exports=function(e,t,n,o,i,r){var s,a=e=e||{},l=typeof e.default;"object"!==l&&"function"!==l||(s=e,a=e.default);var c="function"==typeof a?a.options:a;t&&(c.render=t.render,c.staticRenderFns=t.staticRenderFns,c._compiled=!0),n&&(c.functional=!0),i&&(c._scopeId=i);var d;if(r?(d=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},c._ssrRegister=d):o&&(d=o),d){var v=c.functional,u=v?c.render:c.beforeCreate;v?(c._injectStyles=d,c.render=function(e,t){return d.call(t),u(e,t)}):c.beforeCreate=u?[].concat(u,d):[d]}return{esModule:s,exports:a,options:c}}},function(e,t,n){"use strict";t.a={name:"jsonView",props:{data:{type:[Object,Array],required:!0},jsonKey:{type:String,default:""},closed:{type:Boolean,default:!1},isLast:{type:Boolean,default:!0},fontSize:{type:Number,default:14},lineHeight:{type:Number,default:24},deep:{type:Number,default:3},currentDeep:{type:Number,default:1},iconStyle:{type:String,default:"square"},iconColor:{type:Array,default:function(){return[]}},theme:{type:String,default:""},hasSiblings:{type:Boolean,default:!0}},data:function(){return{innerclosed:this.closed,templateDeep:this.currentDeep,visible:!1}},computed:{isArray:function(){return"array"===this.getDataType(this.data)},length:function(){return this.isArray?this.data.length:Object.keys(this.data).length},subfix:function(){var e=this.data;return this.isEmptyArrayOrObject(e)?"":(this.isArray?"]":"}")+(this.isLast?"":",")},prefix:function(){return this.isArray?"[":"{"},items:function(){var e=this,t=this.data;return this.isArray?t.map(function(t){return{value:t,isJSON:e.isObjectOrArray(t),key:""}}):Object.keys(t).map(function(n){var o=t[n];return{value:o,isJSON:e.isObjectOrArray(o),key:n}})},iconColors:function(){var e=this.theme,t=this.iconColor;return 2===t.length?t:"one-dark"===e?["#747983","#747983"]:"vs-code"===e?["#c6c6c6","#c6c6c6"]:["#747983","#747983"]}},mounted:function(){var e=this;setTimeout(function(){e.visible=!0},0)},methods:{formatValue:function(e){return "",e&&e._isBigNumber?e.toString(10):e},getDataType:function(e){return e&&e._isBigNumber?"number":Object.prototype.toString.call(e).slice(8,-1).toLowerCase()},isObjectOrArray:function(e){return["array","object"].includes(this.getDataType(e))},toggleClose:function(){0!==this.length&&(this.innerclosed?this.innerclosed=!1:this.innerclosed=!0)},isClose:function(){return this.templateDeep+1>this.deep},isEmptyArrayOrObject:function(e){return[{},[]].map(function(e){return JSON.stringify(e)}).includes(JSON.stringify(e))}},watch:{closed:function(){this.innerclosed=this.closed}}}},function(e,t,n){"use strict";var o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.visible?n("div",{class:["json-view-container",e.theme,"deep-"+e.currentDeep]},[n("div",{class:["json-view",e.length?"closeable":""],style:{fontSize:e.fontSize+"px",lineHeight:e.lineHeight+"px"}},[e.length&&"square"===e.iconStyle?n("span",{staticClass:"angle",on:{click:e.toggleClose}},[e.innerclosed?n("svg",{staticStyle:{"vertical-align":"middle",color:"rgb(42, 161, 152)",height:"1em",width:"1em"},attrs:{fill:e.iconColors[0],width:"1em",height:"1em",viewBox:"0 0 1792 1792"}},[n("path",{attrs:{d:"M1344 800v64q0 14-9 23t-23 9h-352v352q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-352h-352q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h352v-352q0-14 9-23t23-9h64q14 0 23 9t9 23v352h352q14 0 23 9t9 23zm128 448v-832q0-66-47-113t-113-47h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z"}})]):e._e(),e._v(" "),e.innerclosed?e._e():n("svg",{staticStyle:{"vertical-align":"middle",color:"rgb(88, 110, 117)",height:"1em",width:"1em"},attrs:{fill:e.iconColors[1],width:"1em",height:"1em",viewBox:"0 0 1792 1792"}},[n("path",{attrs:{d:"M1344 800v64q0 14-9 23t-23 9h-832q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h832q14 0 23 9t9 23zm128 448v-832q0-66-47-113t-113-47h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z"}})])]):e._e(),e._v(" "),e.length&&"circle"===e.iconStyle?n("span",{staticClass:"angle",on:{click:e.toggleClose}},[e.innerclosed?e._e():n("svg",{staticStyle:{"vertical-align":"middle",color:"rgb(1, 160, 228)",height:"1em",width:"1em"},attrs:{viewBox:"0 0 24 24",fill:e.iconColors[0],preserveAspectRatio:"xMidYMid meet"}},[n("path",{attrs:{d:"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,13H17V11H7"}})]),e._v(" "),e.innerclosed?n("svg",{staticStyle:{"vertical-align":"middle",color:"rgb(161, 106, 148)",height:"1em",width:"1em"},attrs:{viewBox:"0 0 24 24",fill:e.iconColors[1],preserveAspectRatio:"xMidYMid meet"}},[n("path",{attrs:{d:"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z"}})]):e._e()]):e._e(),e._v(" "),e.length&&"triangle"===e.iconStyle?n("span",{staticClass:"angle",on:{click:e.toggleClose}},[e.innerclosed?e._e():n("svg",{staticStyle:{"vertical-align":"top",color:"#3c4047",height:"1em",width:"1em","padding-left":"2px"},attrs:{viewBox:"0 0 15 15",fill:e.iconColors[0]}},[n("path",{attrs:{d:"M0 5l6 6 6-6z"}})]),e._v(" "),e.innerclosed?n("svg",{staticStyle:{"vertical-align":"top",color:"#3c4047",height:"1em",width:"1em","padding-left":"2px"},attrs:{viewBox:"0 0 15 15",fill:e.iconColors[1]}},[n("path",{attrs:{d:"M0 14l6-6-6-6z"}})]):e._e()]):e._e(),e._v(" "),n("div",{staticClass:"content-wrap"},[n("p",{class:["first-line",e.length>0?"pointer":""],on:{click:e.toggleClose}},[e.jsonKey?n("span",{staticClass:"json-key"},[e._v('"'+e._s(e.jsonKey)+'": ')]):e._e(),e._v(" "),e.length?n("span",[e._v(e._s(e.prefix)+e._s(e.innerclosed?"..."+e.subfix:"")+"\n "),n("span",{staticClass:"json-note"},[e._v(e._s(e.innerclosed?e.length+" items":""))])]):e._e(),e._v(" "),e.length?e._e():n("span",[e._v(e._s((e.isArray?"[]":"{}")+(e.isLast?"":",")))])]),e._v(" "),!e.innerclosed&&e.length?n("div",{staticClass:"json-body"},[e._l(e.items,function(t,o){return[t.isJSON?n("json-view",{key:o,attrs:{closed:e.isClose(),data:t.value,jsonKey:t.key,currentDeep:e.templateDeep+1,deep:e.deep,iconStyle:e.iconStyle,theme:e.theme,fontSize:e.fontSize,lineHeight:e.lineHeight,iconColor:e.iconColors,isLast:o===e.items.length-1,hasSiblings:t.hasSiblings}}):n("p",{key:o,staticClass:"json-item"},[n("span",{staticClass:"json-key"},[e._v(e._s(e.isArray?"":'"'+t.key+'":'))]),e._v(" "),n("span",{class:["json-value",e.getDataType(t.value)]},[e._v("\n "+e._s(("string"===e.getDataType(t.value)?'"':"")+e.formatValue(t.value)+("string"===e.getDataType(t.value)?'"':"")+(o===e.items.length-1?"":","))+"\n ")])])]}),e._v(" "),e.innerclosed?e._e():n("span",{staticClass:"base-line"})],2):e._e(),e._v(" "),e.innerclosed?e._e():n("p",{staticClass:"last-line"},[n("span",[e._v(e._s(e.subfix))])])])])]):e._e()},i=[],r={render:o,staticRenderFns:i};t.a=r}])});
//# sourceMappingURL=index.js.map
\ No newline at end of file
此差异已折叠。
package com.lhstack;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bouncycastle.util.encoders.Base64;
import org.bouncycastle.util.encoders.Hex;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.lhstack.utils.Aes;
@SpringBootTest
@RunWith(SpringRunner.class)
public class TemplateApplicationTests {
@Value("${aes.key:}")
private String defaultAesKey;
@Value("${aes.iv:}")
private String defaultAesIv;
@Test
public void test() throws Exception{
Map<String,Object> data = new HashMap<>();
data.put("date", new Date());
data.put("time", System.currentTimeMillis());
data.put("msg", "hello world");
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7);
data.put("msg", list);
data.put("class", TemplateApplicationTests.class);
ObjectMapper objectMapper = new ObjectMapper();
byte[] jsonBytes = objectMapper.writeValueAsBytes(data);
byte[] bytes = Aes.encrypt(defaultAesKey, defaultAesIv, jsonBytes);
System.out.println(new String(Base64.encode(bytes),StandardCharsets.UTF_8));
System.out.println(new String(Hex.encode(bytes),StandardCharsets.UTF_8));
}
}
aes:
key: axiwlazlf1456175
iv: 114aqws431@#!%_+
server:
port: 8081
\ No newline at end of file
因为 它太大了无法显示 source diff 。你可以改为 查看blob
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Decrypt</title>
<link rel="stylesheet" href="./css/element-ui.css">
<script src="./js/vue.js"></script>
<script src="./js/vue-json-view.js"></script>
<script src="./js/element-ui.js"></script>
<style>
#input {
width: 99.7%;
height: 300px;
border: 1px solid gray;
overflow-y: auto;
resize: none;
}
.d-btn {
width: 100px;
height: 35px;
margin-bottom: 5px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.d-btn-group {
display: flex;
justify-content: space-around;
width: 1200px;
float: right;
}
#output {
width: 99.9%;
height: 350px;
border: 1px solid gray;
overflow-y: auto;
resize: none;
color: #8c6325
}
.d-input {
width: 200px;
height: 20px;
}
.d-input-group {
width: 300px;
display: flex;
justify-content: flex-end;
align-items: center;
}
</style>
</head>
<body>
<div id="app">
<div style="display: flex;justify-content: space-between">
<label for="input" style="color: darkgoldenrod;margin-bottom: 10px;display: block">
请输入需要解密的内容
</label>
</div>
<textarea ref="input" id="input" v-model="encryptText"></textarea>
<div ref="operate" style="width: 100%;display: flex;justify-content: space-between">
<div style="height: 35px;display: flex;flex-direction: column;justify-content: center;">
<label style="color: darkgoldenrod;display: block;width: 100px">
解密结果
</label>
</div>
<div class="d-btn-group">
<div style="display: flex;justify-content: space-around;width: 550px">
<div class="d-input-group">
<label for="aesKey" style="margin-right: 5px">AesKey:</label>
<input id="aesKey" v-model="aesKey" type="text" class="el-input d-input">
</div>
<div class="d-input-group" style="margin-right: 10px">
<label for="aesIv" style="margin-right: 5px">AesIv:</label>
<input id="aesIv" v-model="aesIv" type="text" class="el-input d-input">
</div>
</div>
<div class="d-btn" style="margin-right: 10px;">
<el-select v-model="theme" size="small" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<button class="el-button el-button--info d-btn" id="copy" @click="duplication">复制内容</button>
<button class="el-button el-button--info d-btn" @click="closed=true" id="collapse">收起</button>
<button class="el-button el-button--info d-btn" @click="closed=false" id="expansion">展开</button>
<button class="el-button el-button--warning d-btn" @click="clean" id="clean">清空内容</button>
<button class="el-button el-button--primary d-btn" id="decrypt" @click="decrypt">解密</button>
</div>
</div>
<div id="output" ref="output">
<json-viewer v-show="isJson" :closed="closed" :theme="theme" :deep="5" :data="jsonData"></json-viewer>
<span v-show="!isJson" v-text="jsonData.data"></span>
</div>
</div>
</body>
<script>
let app = new Vue({
el: "#app",
data() {
return {
jsonData: {},
closed: false,
aesKey: "",
aesIv: "",
encryptText: "9GVtgT5fzydU1O595W+0fIPRew4IFoRUUijxalwx/pHe8ONGN2qvIIwah9bC0oj7QrcdrGfxO9klqwlc7ntUOantY5vb65DJDolUmX/RyU4A5T9DRD5I3tqn2pmaK3EjsSsba+FScfeLq5HTGM258OW2X0ryyPp7iw2s/anGlzw=",
theme: "default",
output: "",
operate: "",
isJson: false,
input: "",
options: [
{
label:"default",
value:""
},{
label: "vs-code",
value: "vs-code"
},{
label: "one-dark",
value: "one-dark"
}
]
}
},
watch:{
"theme": (newV,old) => {
if(!newV){
this.output.style.background = "#fff"
this.input.style.background = "#fff"
if(!this.isJson){
this.output.style.color = "#8c6325"
this.input.style.color = "#8c6325"
}
}else if(newV === "vs-code"){
this.output.style.background = "#1e1e1e"
this.input.style.background = "#1e1e1e"
if(!this.isJson){
this.output.style.color = "#a9dbfb"
this.input.style.color = "#a9dbfb"
}
}else if(newV === "one-dark"){
this.output.style.background = "#292c33"
this.input.style.background = "#292c33"
if(!this.isJson){
this.output.style.color = "#d27277"
this.input.style.color = "#d27277"
}
}
}
},
mounted(){
this.output = this.$refs.output
this.input = this.$refs.input
this.operate = this.$refs.operate
if(window.innerWidth < 1300){
this.output.style.width = (this.operate.scrollWidth - 10) + "px"
this.input.style.width = (this.operate.scrollWidth - 14.5) + "px"
}
addEventListener("resize",() => {
if(window.innerWidth < 1300){
this.output.style.width = (this.operate.scrollWidth - 10) + "px"
this.input.style.width = (this.operate.scrollWidth - 14.5) + "px"
}else {
this.output.style.width = "99.9%"
this.input.style.width = "99.7%"
}
})
},
methods: {
clean() {
this.jsonData = {}
this.encryptText = ""
this.isJson = false
},
duplication() {
if (this.jsonData && Object.keys(this.jsonData).length > 0) {
let input = document.createElement("textarea");
input.value = !this.isJson ? this.jsonData.data : JSON.stringify(this.jsonData,null,2)
document.body.appendChild(input);
input.select();
document.execCommand("copy");
document.body.removeChild(input);
this.$message({
message:"复制成功",
type:"success"
})
}
},
async decrypt() {
if (this.encryptText && this.encryptText.trim()) {
let data = {
"content": this.encryptText
}
console.log(this.aesKey)
if (this.aesKey && this.aesKey.trim()) {
data.key = this.aesKey
}
if (this.aesIv && this.aesIv.trim()) {
data.iv = this.aesIv
}
let resp = await fetch("/crypto/decrypt", {
method: "POST",
body: JSON.stringify(data),
headers: {
"Content-Type": "application/json"
}
})
let text = await resp.text()
try{
this.jsonData = JSON.parse(text)
this.isJson = true
}catch (e){
this.isJson = false
this.jsonData = {
data: text
}
}
} else {
this.$message({
message:"请输入需要解密的内容",
type: "warning"
})
}
}
},
components: {
"json-viewer": window['vue-json-view'].default
}
})
</script>
</html>
\ No newline at end of file
此差异已折叠。
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("vue-json-view",[],t):"object"==typeof exports?exports["vue-json-view"]=t():e["vue-json-view"]=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=1)}([function(e,t,n){"use strict";var o=n(9);t.a=o.a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n(2);t.default=o.a},function(e,t,n){"use strict";function o(e){n(3)}var i=n(0),r=n(10),s=n(8),a=o,l=s(i.a,r.a,!1,a,"data-v-613ef595",null);t.a=l.exports},function(e,t,n){var o=n(4);"string"==typeof o&&(o=[[e.i,o,""]]),o.locals&&(e.exports=o.locals);n(6)("3277a7a2",o,!0,{})},function(e,t,n){t=e.exports=n(5)(!1),t.push([e.i,".json-view-container[data-v-613ef595]{background-color:#fff}.json-view-container.deep-1[data-v-613ef595]{padding-right:10px}.json-view-container .json-view[data-v-613ef595]{position:relative;display:block;width:100%;height:100%;white-space:nowrap;padding-left:2rem;box-sizing:border-box;font-family:Consolas!important;cursor:default}.json-view-container .json-view .json-note[data-v-613ef595]{color:#909399;font-size:12px;font-style:italic}.json-view-container .json-view .json-key[data-v-613ef595]{color:#8c6325}.json-view-container .json-view .json-value[data-v-613ef595]{display:inline-block;color:#57b73b;word-break:break-all;white-space:normal}.json-view-container .json-view .json-value.number[data-v-613ef595]{color:#2d8cf0}.json-view-container .json-view .json-value.string[data-v-613ef595]{color:#57b73b}.json-view-container .json-view .json-value.boolean[data-v-613ef595],.json-view-container .json-view .json-value.null[data-v-613ef595]{color:#eb3324}.json-view-container .json-view .json-item[data-v-613ef595]{margin:0;padding-left:2rem;display:flex}.json-view-container .json-view .first-line[data-v-613ef595]{padding:0;margin:0}.json-view-container .json-view .first-line.pointer[data-v-613ef595]{cursor:pointer!important}.json-view-container .json-view .json-body[data-v-613ef595]{position:relative;padding:0;margin:0}.json-view-container .json-view .json-body .base-line[data-v-613ef595]{position:absolute;height:100%;border-left:1px dashed #bbb;top:0;left:2px}.json-view-container .json-view .last-line[data-v-613ef595]{padding:0;margin:0}.json-view-container .json-view .angle[data-v-613ef595]{position:absolute;display:block;cursor:pointer;float:left;width:20px;text-align:center;left:12px}.json-view-container.one-dark[data-v-613ef595]{background-color:#292c33}.json-view-container.one-dark .json-view[data-v-613ef595]{font-family:Menlo,Consolas,Courier New,Courier,FreeMono,monospace!important}.json-view-container.one-dark .json-view .json-note[data-v-613ef595]{color:#909399;font-size:12px;font-style:italic}.json-view-container.one-dark .json-view .json-key[data-v-613ef595]{color:#d27277}.json-view-container.one-dark .json-view .json-value[data-v-613ef595]{color:#c6937c}.json-view-container.one-dark .json-view .json-value.number[data-v-613ef595]{color:#bacdab}.json-view-container.one-dark .json-view .json-value.string[data-v-613ef595]{color:#c6937c}.json-view-container.one-dark .json-view .json-value.boolean[data-v-613ef595],.json-view-container.one-dark .json-view .json-value.null[data-v-613ef595]{color:#659bd1}.json-view-container.one-dark .json-view .first-line[data-v-613ef595]{color:#acb2be}.json-view-container.one-dark .json-view .json-body .base-line[data-v-613ef595]{border-left:1px solid #3c4047}.json-view-container.one-dark .json-view .json-item[data-v-613ef595],.json-view-container.one-dark .json-view .last-line[data-v-613ef595]{color:#acb2be}.json-view-container.vs-code[data-v-613ef595]{background-color:#1e1e1e}.json-view-container.vs-code .json-view[data-v-613ef595]{font-family:Menlo,Consolas,Courier New,Courier,FreeMono,monospace!important}.json-view-container.vs-code .json-view .json-note[data-v-613ef595]{color:#909399;font-size:12px;font-style:italic}.json-view-container.vs-code .json-view .json-key[data-v-613ef595]{color:#a9dbfb}.json-view-container.vs-code .json-view .json-value[data-v-613ef595]{color:#c6937c}.json-view-container.vs-code .json-view .first-line[data-v-613ef595]{color:#d4d4d4}.json-view-container.vs-code .json-view .json-body .base-line[data-v-613ef595]{border-left:1px solid #404040}.json-view-container.vs-code .json-view .json-item[data-v-613ef595],.json-view-container.vs-code .json-view .last-line[data-v-613ef595]{color:#d4d4d4}",""])},function(e,t){function n(e,t){var n=e[1]||"",i=e[3];if(!i)return n;if(t&&"function"==typeof btoa){var r=o(i);return[n].concat(i.sources.map(function(e){return"/*# sourceURL="+i.sourceRoot+e+" */"})).concat([r]).join("\n")}return[n].join("\n")}function o(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var o=n(t,e);return t[2]?"@media "+t[2]+"{"+o+"}":o}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var o={},i=0;i<this.length;i++){var r=this[i][0];"number"==typeof r&&(o[r]=!0)}for(i=0;i<e.length;i++){var s=e[i];"number"==typeof s[0]&&o[s[0]]||(n&&!s[2]?s[2]=n:n&&(s[2]="("+s[2]+") and ("+n+")"),t.push(s))}},t}},function(e,t,n){function o(e){for(var t=0;t<e.length;t++){var n=e[t],o=d[n.id];if(o){o.refs++;for(var i=0;i<o.parts.length;i++)o.parts[i](n.parts[i]);for(;i<n.parts.length;i++)o.parts.push(r(n.parts[i]));o.parts.length>n.parts.length&&(o.parts.length=n.parts.length)}else{for(var s=[],i=0;i<n.parts.length;i++)s.push(r(n.parts[i]));d[n.id]={id:n.id,refs:1,parts:s}}}}function i(){var e=document.createElement("style");return e.type="text/css",v.appendChild(e),e}function r(e){var t,n,o=document.querySelector("style["+g+'~="'+e.id+'"]');if(o){if(p)return h;o.parentNode.removeChild(o)}if(m){var r=f++;o=u||(u=i()),t=s.bind(null,o,r,!1),n=s.bind(null,o,r,!0)}else o=i(),t=a.bind(null,o),n=function(){o.parentNode.removeChild(o)};return t(e),function(o){if(o){if(o.css===e.css&&o.media===e.media&&o.sourceMap===e.sourceMap)return;t(e=o)}else n()}}function s(e,t,n,o){var i=n?"":o.css;if(e.styleSheet)e.styleSheet.cssText=y(t,i);else{var r=document.createTextNode(i),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(r,s[t]):e.appendChild(r)}}function a(e,t){var n=t.css,o=t.media,i=t.sourceMap;if(o&&e.setAttribute("media",o),j.ssrId&&e.setAttribute(g,t.id),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var l="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!l)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var c=n(7),d={},v=l&&(document.head||document.getElementsByTagName("head")[0]),u=null,f=0,p=!1,h=function(){},j=null,g="data-vue-ssr-id",m="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());e.exports=function(e,t,n,i){p=n,j=i||{};var r=c(e,t);return o(r),function(t){for(var n=[],i=0;i<r.length;i++){var s=r[i],a=d[s.id];a.refs--,n.push(a)}t?(r=c(e,t),o(r)):r=[];for(var i=0;i<n.length;i++){var a=n[i];if(0===a.refs){for(var l=0;l<a.parts.length;l++)a.parts[l]();delete d[a.id]}}}};var y=function(){var e=[];return function(t,n){return e[t]=n,e.filter(Boolean).join("\n")}}()},function(e,t){e.exports=function(e,t){for(var n=[],o={},i=0;i<t.length;i++){var r=t[i],s=r[0],a=r[1],l=r[2],c=r[3],d={id:e+":"+i,css:a,media:l,sourceMap:c};o[s]?o[s].parts.push(d):n.push(o[s]={id:s,parts:[d]})}return n}},function(e,t){e.exports=function(e,t,n,o,i,r){var s,a=e=e||{},l=typeof e.default;"object"!==l&&"function"!==l||(s=e,a=e.default);var c="function"==typeof a?a.options:a;t&&(c.render=t.render,c.staticRenderFns=t.staticRenderFns,c._compiled=!0),n&&(c.functional=!0),i&&(c._scopeId=i);var d;if(r?(d=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},c._ssrRegister=d):o&&(d=o),d){var v=c.functional,u=v?c.render:c.beforeCreate;v?(c._injectStyles=d,c.render=function(e,t){return d.call(t),u(e,t)}):c.beforeCreate=u?[].concat(u,d):[d]}return{esModule:s,exports:a,options:c}}},function(e,t,n){"use strict";t.a={name:"jsonView",props:{data:{type:[Object,Array],required:!0},jsonKey:{type:String,default:""},closed:{type:Boolean,default:!1},isLast:{type:Boolean,default:!0},fontSize:{type:Number,default:14},lineHeight:{type:Number,default:24},deep:{type:Number,default:3},currentDeep:{type:Number,default:1},iconStyle:{type:String,default:"square"},iconColor:{type:Array,default:function(){return[]}},theme:{type:String,default:""},hasSiblings:{type:Boolean,default:!0}},data:function(){return{innerclosed:this.closed,templateDeep:this.currentDeep,visible:!1}},computed:{isArray:function(){return"array"===this.getDataType(this.data)},length:function(){return this.isArray?this.data.length:Object.keys(this.data).length},subfix:function(){var e=this.data;return this.isEmptyArrayOrObject(e)?"":(this.isArray?"]":"}")+(this.isLast?"":",")},prefix:function(){return this.isArray?"[":"{"},items:function(){var e=this,t=this.data;return this.isArray?t.map(function(t){return{value:t,isJSON:e.isObjectOrArray(t),key:""}}):Object.keys(t).map(function(n){var o=t[n];return{value:o,isJSON:e.isObjectOrArray(o),key:n}})},iconColors:function(){var e=this.theme,t=this.iconColor;return 2===t.length?t:"one-dark"===e?["#747983","#747983"]:"vs-code"===e?["#c6c6c6","#c6c6c6"]:["#747983","#747983"]}},mounted:function(){var e=this;setTimeout(function(){e.visible=!0},0)},methods:{formatValue:function(e){return "",e&&e._isBigNumber?e.toString(10):e},getDataType:function(e){return e&&e._isBigNumber?"number":Object.prototype.toString.call(e).slice(8,-1).toLowerCase()},isObjectOrArray:function(e){return["array","object"].includes(this.getDataType(e))},toggleClose:function(){0!==this.length&&(this.innerclosed?this.innerclosed=!1:this.innerclosed=!0)},isClose:function(){return this.templateDeep+1>this.deep},isEmptyArrayOrObject:function(e){return[{},[]].map(function(e){return JSON.stringify(e)}).includes(JSON.stringify(e))}},watch:{closed:function(){this.innerclosed=this.closed}}}},function(e,t,n){"use strict";var o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.visible?n("div",{class:["json-view-container",e.theme,"deep-"+e.currentDeep]},[n("div",{class:["json-view",e.length?"closeable":""],style:{fontSize:e.fontSize+"px",lineHeight:e.lineHeight+"px"}},[e.length&&"square"===e.iconStyle?n("span",{staticClass:"angle",on:{click:e.toggleClose}},[e.innerclosed?n("svg",{staticStyle:{"vertical-align":"middle",color:"rgb(42, 161, 152)",height:"1em",width:"1em"},attrs:{fill:e.iconColors[0],width:"1em",height:"1em",viewBox:"0 0 1792 1792"}},[n("path",{attrs:{d:"M1344 800v64q0 14-9 23t-23 9h-352v352q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-352h-352q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h352v-352q0-14 9-23t23-9h64q14 0 23 9t9 23v352h352q14 0 23 9t9 23zm128 448v-832q0-66-47-113t-113-47h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z"}})]):e._e(),e._v(" "),e.innerclosed?e._e():n("svg",{staticStyle:{"vertical-align":"middle",color:"rgb(88, 110, 117)",height:"1em",width:"1em"},attrs:{fill:e.iconColors[1],width:"1em",height:"1em",viewBox:"0 0 1792 1792"}},[n("path",{attrs:{d:"M1344 800v64q0 14-9 23t-23 9h-832q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h832q14 0 23 9t9 23zm128 448v-832q0-66-47-113t-113-47h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z"}})])]):e._e(),e._v(" "),e.length&&"circle"===e.iconStyle?n("span",{staticClass:"angle",on:{click:e.toggleClose}},[e.innerclosed?e._e():n("svg",{staticStyle:{"vertical-align":"middle",color:"rgb(1, 160, 228)",height:"1em",width:"1em"},attrs:{viewBox:"0 0 24 24",fill:e.iconColors[0],preserveAspectRatio:"xMidYMid meet"}},[n("path",{attrs:{d:"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,13H17V11H7"}})]),e._v(" "),e.innerclosed?n("svg",{staticStyle:{"vertical-align":"middle",color:"rgb(161, 106, 148)",height:"1em",width:"1em"},attrs:{viewBox:"0 0 24 24",fill:e.iconColors[1],preserveAspectRatio:"xMidYMid meet"}},[n("path",{attrs:{d:"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z"}})]):e._e()]):e._e(),e._v(" "),e.length&&"triangle"===e.iconStyle?n("span",{staticClass:"angle",on:{click:e.toggleClose}},[e.innerclosed?e._e():n("svg",{staticStyle:{"vertical-align":"top",color:"#3c4047",height:"1em",width:"1em","padding-left":"2px"},attrs:{viewBox:"0 0 15 15",fill:e.iconColors[0]}},[n("path",{attrs:{d:"M0 5l6 6 6-6z"}})]),e._v(" "),e.innerclosed?n("svg",{staticStyle:{"vertical-align":"top",color:"#3c4047",height:"1em",width:"1em","padding-left":"2px"},attrs:{viewBox:"0 0 15 15",fill:e.iconColors[1]}},[n("path",{attrs:{d:"M0 14l6-6-6-6z"}})]):e._e()]):e._e(),e._v(" "),n("div",{staticClass:"content-wrap"},[n("p",{class:["first-line",e.length>0?"pointer":""],on:{click:e.toggleClose}},[e.jsonKey?n("span",{staticClass:"json-key"},[e._v('"'+e._s(e.jsonKey)+'": ')]):e._e(),e._v(" "),e.length?n("span",[e._v(e._s(e.prefix)+e._s(e.innerclosed?"..."+e.subfix:"")+"\n "),n("span",{staticClass:"json-note"},[e._v(e._s(e.innerclosed?e.length+" items":""))])]):e._e(),e._v(" "),e.length?e._e():n("span",[e._v(e._s((e.isArray?"[]":"{}")+(e.isLast?"":",")))])]),e._v(" "),!e.innerclosed&&e.length?n("div",{staticClass:"json-body"},[e._l(e.items,function(t,o){return[t.isJSON?n("json-view",{key:o,attrs:{closed:e.isClose(),data:t.value,jsonKey:t.key,currentDeep:e.templateDeep+1,deep:e.deep,iconStyle:e.iconStyle,theme:e.theme,fontSize:e.fontSize,lineHeight:e.lineHeight,iconColor:e.iconColors,isLast:o===e.items.length-1,hasSiblings:t.hasSiblings}}):n("p",{key:o,staticClass:"json-item"},[n("span",{staticClass:"json-key"},[e._v(e._s(e.isArray?"":'"'+t.key+'":'))]),e._v(" "),n("span",{class:["json-value",e.getDataType(t.value)]},[e._v("\n "+e._s(("string"===e.getDataType(t.value)?'"':"")+e.formatValue(t.value)+("string"===e.getDataType(t.value)?'"':"")+(o===e.items.length-1?"":","))+"\n ")])])]}),e._v(" "),e.innerclosed?e._e():n("span",{staticClass:"base-line"})],2):e._e(),e._v(" "),e.innerclosed?e._e():n("p",{staticClass:"last-line"},[n("span",[e._v(e._s(e.subfix))])])])])]):e._e()},i=[],r={render:o,staticRenderFns:i};t.a=r}])});
//# sourceMappingURL=index.js.map
\ No newline at end of file
此差异已折叠。
artifactId=template
groupId=com.lhstack
version=1.0-SNAPSHOT
/root/springboot-template/src/main/java/com/lhstack/controller/CryptoController.java
/root/springboot-template/src/main/java/com/lhstack/utils/Aes.java
/root/springboot-template/src/main/java/com/lhstack/config/WebMvcConfiguration.java
/root/springboot-template/src/main/java/com/lhstack/TemplateApplication.java
<?xml version="1.0" encoding="UTF-8"?>
<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" name="com.lhstack.TemplateApplicationTests" time="2.48" tests="1" errors="0" skipped="0" failures="0">
<properties>
<property name="awt.toolkit" value="sun.awt.X11.XToolkit"/>
<property name="file.encoding.pkg" value="sun.io"/>
<property name="java.specification.version" value="1.8"/>
<property name="sun.cpu.isalist" value=""/>
<property name="sun.jnu.encoding" value="UTF-8"/>
<property name="java.class.path" value="/root/Java/target/test-classes:/root/Java/target/classes:/root/.m2/repository/org/springframework/boot/spring-boot-starter-web/2.3.12.RELEASE/spring-boot-starter-web-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter/2.3.12.RELEASE/spring-boot-starter-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot/2.3.12.RELEASE/spring-boot-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.3.12.RELEASE/spring-boot-autoconfigure-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-logging/2.3.12.RELEASE/spring-boot-starter-logging-2.3.12.RELEASE.jar:/root/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar:/root/.m2/repository/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar:/root/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3.jar:/root/.m2/repository/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.jar:/root/.m2/repository/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30.jar:/root/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar:/root/.m2/repository/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-json/2.3.12.RELEASE/spring-boot-starter-json-2.3.12.RELEASE.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.11.4/jackson-databind-2.11.4.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.11.4/jackson-annotations-2.11.4.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.11.4/jackson-core-2.11.4.jar:/root/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.4/jackson-datatype-jdk8-2.11.4.jar:/root/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.4/jackson-datatype-jsr310-2.11.4.jar:/root/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.4/jackson-module-parameter-names-2.11.4.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/2.3.12.RELEASE/spring-boot-starter-tomcat-2.3.12.RELEASE.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.46/tomcat-embed-core-9.0.46.jar:/root/.m2/repository/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.46/tomcat-embed-websocket-9.0.46.jar:/root/.m2/repository/org/springframework/spring-web/5.2.15.RELEASE/spring-web-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-beans/5.2.15.RELEASE/spring-beans-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-webmvc/5.2.15.RELEASE/spring-webmvc-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-aop/5.2.15.RELEASE/spring-aop-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-context/5.2.15.RELEASE/spring-context-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-expression/5.2.15.RELEASE/spring-expression-5.2.15.RELEASE.jar:/root/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.64/bcprov-jdk15on-1.64.jar:/root/.m2/repository/io/reactivex/rxjava2/rxjava/2.2.21/rxjava-2.2.21.jar:/root/.m2/repository/org/reactivestreams/reactive-streams/1.0.3/reactive-streams-1.0.3.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-test/2.3.12.RELEASE/spring-boot-starter-test-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-test/2.3.12.RELEASE/spring-boot-test-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/2.3.12.RELEASE/spring-boot-test-autoconfigure-2.3.12.RELEASE.jar:/root/.m2/repository/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0.jar:/root/.m2/repository/net/minidev/json-smart/2.3.1/json-smart-2.3.1.jar:/root/.m2/repository/net/minidev/accessors-smart/2.3.1/accessors-smart-2.3.1.jar:/root/.m2/repository/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar:/root/.m2/repository/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar:/root/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3.jar:/root/.m2/repository/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar:/root/.m2/repository/org/assertj/assertj-core/3.16.1/assertj-core-3.16.1.jar:/root/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/root/.m2/repository/org/junit/jupiter/junit-jupiter/5.6.3/junit-jupiter-5.6.3.jar:/root/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.6.3/junit-jupiter-api-5.6.3.jar:/root/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/root/.m2/repository/org/junit/platform/junit-platform-commons/1.6.3/junit-platform-commons-1.6.3.jar:/root/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.6.3/junit-jupiter-params-5.6.3.jar:/root/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.6.3/junit-jupiter-engine-5.6.3.jar:/root/.m2/repository/org/junit/vintage/junit-vintage-engine/5.6.3/junit-vintage-engine-5.6.3.jar:/root/.m2/repository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar:/root/.m2/repository/org/junit/platform/junit-platform-engine/1.6.3/junit-platform-engine-1.6.3.jar:/root/.m2/repository/junit/junit/4.13.2/junit-4.13.2.jar:/root/.m2/repository/org/mockito/mockito-core/3.3.3/mockito-core-3.3.3.jar:/root/.m2/repository/net/bytebuddy/byte-buddy/1.10.22/byte-buddy-1.10.22.jar:/root/.m2/repository/net/bytebuddy/byte-buddy-agent/1.10.22/byte-buddy-agent-1.10.22.jar:/root/.m2/repository/org/objenesis/objenesis/2.6/objenesis-2.6.jar:/root/.m2/repository/org/mockito/mockito-junit-jupiter/3.3.3/mockito-junit-jupiter-3.3.3.jar:/root/.m2/repository/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0.jar:/root/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar:/root/.m2/repository/org/springframework/spring-core/5.2.15.RELEASE/spring-core-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-jcl/5.2.15.RELEASE/spring-jcl-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-test/5.2.15.RELEASE/spring-test-5.2.15.RELEASE.jar:/root/.m2/repository/org/xmlunit/xmlunit-core/2.7.0/xmlunit-core-2.7.0.jar:"/>
<property name="java.vm.vendor" value="Private Build"/>
<property name="sun.arch.data.model" value="64"/>
<property name="java.vendor.url" value="http://java.oracle.com/"/>
<property name="user.timezone" value=""/>
<property name="java.vm.specification.version" value="1.8"/>
<property name="os.name" value="Linux"/>
<property name="user.country" value="US"/>
<property name="sun.java.launcher" value="SUN_STANDARD"/>
<property name="sun.boot.library.path" value="/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64"/>
<property name="sun.java.command" value="/root/Java/target/surefire/surefirebooter8981342861751727056.jar /root/Java/target/surefire 2023-04-21T11-57-08_938-jvmRun1 surefire2909378441835173903tmp surefire_01058452330805304441tmp"/>
<property name="surefire.test.class.path" value="/root/Java/target/test-classes:/root/Java/target/classes:/root/.m2/repository/org/springframework/boot/spring-boot-starter-web/2.3.12.RELEASE/spring-boot-starter-web-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter/2.3.12.RELEASE/spring-boot-starter-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot/2.3.12.RELEASE/spring-boot-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.3.12.RELEASE/spring-boot-autoconfigure-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-logging/2.3.12.RELEASE/spring-boot-starter-logging-2.3.12.RELEASE.jar:/root/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar:/root/.m2/repository/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar:/root/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.13.3/log4j-to-slf4j-2.13.3.jar:/root/.m2/repository/org/apache/logging/log4j/log4j-api/2.13.3/log4j-api-2.13.3.jar:/root/.m2/repository/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30.jar:/root/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar:/root/.m2/repository/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-json/2.3.12.RELEASE/spring-boot-starter-json-2.3.12.RELEASE.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.11.4/jackson-databind-2.11.4.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.11.4/jackson-annotations-2.11.4.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.11.4/jackson-core-2.11.4.jar:/root/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.4/jackson-datatype-jdk8-2.11.4.jar:/root/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.4/jackson-datatype-jsr310-2.11.4.jar:/root/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.4/jackson-module-parameter-names-2.11.4.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/2.3.12.RELEASE/spring-boot-starter-tomcat-2.3.12.RELEASE.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.46/tomcat-embed-core-9.0.46.jar:/root/.m2/repository/org/glassfish/jakarta.el/3.0.3/jakarta.el-3.0.3.jar:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.46/tomcat-embed-websocket-9.0.46.jar:/root/.m2/repository/org/springframework/spring-web/5.2.15.RELEASE/spring-web-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-beans/5.2.15.RELEASE/spring-beans-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-webmvc/5.2.15.RELEASE/spring-webmvc-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-aop/5.2.15.RELEASE/spring-aop-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-context/5.2.15.RELEASE/spring-context-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-expression/5.2.15.RELEASE/spring-expression-5.2.15.RELEASE.jar:/root/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.64/bcprov-jdk15on-1.64.jar:/root/.m2/repository/io/reactivex/rxjava2/rxjava/2.2.21/rxjava-2.2.21.jar:/root/.m2/repository/org/reactivestreams/reactive-streams/1.0.3/reactive-streams-1.0.3.jar:/root/.m2/repository/org/springframework/boot/spring-boot-starter-test/2.3.12.RELEASE/spring-boot-starter-test-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-test/2.3.12.RELEASE/spring-boot-test-2.3.12.RELEASE.jar:/root/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/2.3.12.RELEASE/spring-boot-test-autoconfigure-2.3.12.RELEASE.jar:/root/.m2/repository/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0.jar:/root/.m2/repository/net/minidev/json-smart/2.3.1/json-smart-2.3.1.jar:/root/.m2/repository/net/minidev/accessors-smart/2.3.1/accessors-smart-2.3.1.jar:/root/.m2/repository/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar:/root/.m2/repository/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar:/root/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3.jar:/root/.m2/repository/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar:/root/.m2/repository/org/assertj/assertj-core/3.16.1/assertj-core-3.16.1.jar:/root/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/root/.m2/repository/org/junit/jupiter/junit-jupiter/5.6.3/junit-jupiter-5.6.3.jar:/root/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.6.3/junit-jupiter-api-5.6.3.jar:/root/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/root/.m2/repository/org/junit/platform/junit-platform-commons/1.6.3/junit-platform-commons-1.6.3.jar:/root/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.6.3/junit-jupiter-params-5.6.3.jar:/root/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.6.3/junit-jupiter-engine-5.6.3.jar:/root/.m2/repository/org/junit/vintage/junit-vintage-engine/5.6.3/junit-vintage-engine-5.6.3.jar:/root/.m2/repository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar:/root/.m2/repository/org/junit/platform/junit-platform-engine/1.6.3/junit-platform-engine-1.6.3.jar:/root/.m2/repository/junit/junit/4.13.2/junit-4.13.2.jar:/root/.m2/repository/org/mockito/mockito-core/3.3.3/mockito-core-3.3.3.jar:/root/.m2/repository/net/bytebuddy/byte-buddy/1.10.22/byte-buddy-1.10.22.jar:/root/.m2/repository/net/bytebuddy/byte-buddy-agent/1.10.22/byte-buddy-agent-1.10.22.jar:/root/.m2/repository/org/objenesis/objenesis/2.6/objenesis-2.6.jar:/root/.m2/repository/org/mockito/mockito-junit-jupiter/3.3.3/mockito-junit-jupiter-3.3.3.jar:/root/.m2/repository/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0.jar:/root/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar:/root/.m2/repository/org/springframework/spring-core/5.2.15.RELEASE/spring-core-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-jcl/5.2.15.RELEASE/spring-jcl-5.2.15.RELEASE.jar:/root/.m2/repository/org/springframework/spring-test/5.2.15.RELEASE/spring-test-5.2.15.RELEASE.jar:/root/.m2/repository/org/xmlunit/xmlunit-core/2.7.0/xmlunit-core-2.7.0.jar:"/>
<property name="sun.cpu.endian" value="little"/>
<property name="user.home" value="/root"/>
<property name="user.language" value="en"/>
<property name="java.specification.vendor" value="Oracle Corporation"/>
<property name="java.home" value="/usr/lib/jvm/java-8-openjdk-amd64/jre"/>
<property name="basedir" value="/root/Java"/>
<property name="file.separator" value="/"/>
<property name="line.separator" value="&#10;"/>
<property name="java.vm.specification.vendor" value="Oracle Corporation"/>
<property name="java.specification.name" value="Java Platform API Specification"/>
<property name="java.awt.graphicsenv" value="sun.awt.X11GraphicsEnvironment"/>
<property name="surefire.real.class.path" value="/root/Java/target/surefire/surefirebooter8981342861751727056.jar"/>
<property name="sun.boot.class.path" value="/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfr.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/classes"/>
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
<property name="java.runtime.version" value="1.8.0_342-8u342-b07-0ubuntu1~20.04-b07"/>
<property name="user.name" value="root"/>
<property name="path.separator" value=":"/>
<property name="os.version" value="4.19.126-1.jdcloud.x86_64"/>
<property name="java.endorsed.dirs" value="/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/endorsed"/>
<property name="java.runtime.name" value="OpenJDK Runtime Environment"/>
<property name="file.encoding" value="UTF-8"/>
<property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/>
<property name="localRepository" value="/root/.m2/repository"/>
<property name="java.vendor.url.bug" value="http://bugreport.sun.com/bugreport/"/>
<property name="java.io.tmpdir" value="/tmp"/>
<property name="java.version" value="1.8.0_342"/>
<property name="user.dir" value="/root/Java"/>
<property name="os.arch" value="amd64"/>
<property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
<property name="java.awt.printerjob" value="sun.print.PSPrinterJob"/>
<property name="sun.os.patch.level" value="unknown"/>
<property name="java.library.path" value="/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib"/>
<property name="java.vm.info" value="mixed mode"/>
<property name="java.vendor" value="Private Build"/>
<property name="java.vm.version" value="25.342-b07"/>
<property name="java.ext.dirs" value="/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext:/usr/java/packages/lib/ext"/>
<property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
<property name="java.class.version" value="52.0"/>
</properties>
<testcase name="test" classname="com.lhstack.TemplateApplicationTests" time="0.634"/>
</testsuite>
\ No newline at end of file
-------------------------------------------------------------------------------
Test set: com.lhstack.TemplateApplicationTests
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.48 s - in com.lhstack.TemplateApplicationTests
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册