diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 00a51af..0000000 --- a/.gitattributes +++ /dev/null @@ -1,6 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# These are explicitly windows files and should use crlf -*.bat text eol=crlf - diff --git a/.gitignore b/.gitignore index 54a5f5d..6c01878 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,32 @@ -# Ignore Gradle project-specific cache directory +HELP.md .gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/** +!**/src/test/** -# Ignore Gradle build output directory -build +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache -.idea \ No newline at end of file +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/HELP.md b/HELP.md new file mode 100644 index 0000000..9ab160f --- /dev/null +++ b/HELP.md @@ -0,0 +1,21 @@ +# Getting Started + +### Reference Documentation +For further reference, please consider the following sections: + +* [Official Gradle documentation](https://docs.gradle.org) +* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.2.4.RELEASE/gradle-plugin/reference/html/) +* [Spring Web](https://docs.spring.io/spring-boot/docs/2.2.4.RELEASE/reference/htmlsingle/#boot-features-developing-web-applications) + +### Guides +The following guides illustrate how to use some features concretely: + +* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/) +* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/) +* [Building REST services with Spring](https://spring.io/guides/tutorials/bookmarks/) + +### Additional Links +These additional references should also help you: + +* [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle) + diff --git a/build.gradle b/build.gradle index d93e3c8..5cab1a6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,35 +1,33 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * This generated file contains a sample Java project to get you started. - * For more details take a look at the Java Quickstart chapter in the Gradle - * User Manual available at https://docs.gradle.org/6.1.1/userguide/tutorial_java_projects.html - */ - - plugins { - // Apply the java plugin to add support for Java - id 'java' - - // Apply the application plugin to add support for building a CLI application. - id 'application' + id 'org.springframework.boot' version '2.2.4.RELEASE' + id 'io.spring.dependency-management' version '1.0.9.RELEASE' + id 'java' } +group = 'com.example' +version = '0.0.1-SNAPSHOT' + +sourceCompatibility = JavaVersion.VERSION_1_8 +targetCompatibility = JavaVersion.VERSION_1_8 + repositories { - // Use jcenter for resolving dependencies. - // You can declare any Maven/Ivy/file repository here. - jcenter() + maven {url 'https://maven.aliyun.com/repository/public'} + maven {url 'https://maven.aliyun.com/repository/jcenter'} + mavenLocal() + mavenCentral() } -dependencies { - // This dependency is used by the application. - implementation 'com.google.guava:guava:28.1-jre' - // Use JUnit test framework - testImplementation 'junit:junit:4.12' +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' + implementation 'org.springframework.boot:spring-boot-starter-data-rest' + implementation 'org.springframework.boot:spring-boot-starter-web' + testImplementation 'org.springframework.boot:spring-boot-devtools' + testImplementation('org.springframework.boot:spring-boot-starter-test') { + exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' + } } -application { - // Define the main class for the application. - mainClassName = 'PocketCommunityServer.App' +test { + useJUnitPlatform() } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f3d88b1..29953ea 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f3c0e92..5142c37 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ -#Thu Feb 20 14:24:39 CST 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +#Fri Feb 21 06:30:36 CST 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 2fe81a7..cccdd3d 100644 --- a/gradlew +++ b/gradlew @@ -1,21 +1,5 @@ #!/usr/bin/env sh -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - ############################################################################## ## ## Gradle start up script for UN*X @@ -44,7 +28,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -125,8 +109,8 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` JAVACMD=`cygpath --unix "$JAVACMD"` @@ -154,19 +138,19 @@ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then else eval `echo args$i`="\"$arg\"" fi - i=`expr $i + 1` + i=$((i+1)) done case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -175,9 +159,14 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=`save "$@"` +APP_ARGS=$(save "$@") # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 9618d8d..f955316 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,19 +1,3 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -30,7 +14,7 @@ set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" +set DEFAULT_JVM_OPTS= @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome diff --git a/settings.gradle b/settings.gradle index dcc5979..7b8c4f4 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,10 +1 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user manual at https://docs.gradle.org/6.1.1/userguide/multi_project_builds.html - */ - rootProject.name = 'PocketCommunityServer' diff --git a/src/main/java/com/community/pocket/DemoApplication.java b/src/main/java/com/community/pocket/DemoApplication.java new file mode 100644 index 0000000..c20efdd --- /dev/null +++ b/src/main/java/com/community/pocket/DemoApplication.java @@ -0,0 +1,13 @@ +package com.community.pocket; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DemoApplication { + + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } + +} diff --git a/src/main/java/com/community/pocket/Result.java b/src/main/java/com/community/pocket/Result.java new file mode 100644 index 0000000..56cd525 --- /dev/null +++ b/src/main/java/com/community/pocket/Result.java @@ -0,0 +1,6 @@ +package com.community.pocket; + +public enum Result { + OK, + FAIL +} diff --git a/src/main/java/com/community/pocket/api/ManagerController.java b/src/main/java/com/community/pocket/api/ManagerController.java new file mode 100644 index 0000000..8f0affd --- /dev/null +++ b/src/main/java/com/community/pocket/api/ManagerController.java @@ -0,0 +1,78 @@ +package com.community.pocket.api; + +import com.community.pocket.Result; +import com.community.pocket.domain.Manager; +import com.community.pocket.domain.Res; +import com.community.pocket.domain.Token; +import com.community.pocket.domain.form.ManagerLogin; +import com.community.pocket.domain.form.ManagerRegister; +import com.community.pocket.repository.ManagerDao; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.DigestUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.Calendar; +import java.util.Date; + +@RestController +@RequestMapping("/api/manager") +@CrossOrigin("http://localhost:4200") +public class ManagerController { + + @Autowired + private ManagerDao managerDao; + +// 登陆 + @PostMapping("login") + @ResponseBody + public Res login(@RequestBody ManagerLogin managerLogin){ + if(StringUtils.isEmpty(managerLogin.getManagerName())){ + return new Res<>(Result.FAIL,"管理员不能为空!",null); + }else if(StringUtils.isEmpty(managerLogin.getPassword())){ + return new Res<>(Result.FAIL,"密码不能为空!",null); + }else if(!managerDao.login(managerLogin)){ + return new Res<>(Result.FAIL,"账号或密码错误!",null); + } + else{ + Token token=new Token(); + Calendar c=Calendar.getInstance(); + c.setTime(new Date()); + token.setCreateTime(c.getTimeInMillis()); + c.add(Calendar.HOUR,1); + token.setUseTime(c.getTimeInMillis()); + token.setToken(DigestUtils.md5DigestAsHex((token.getCreateTime()+""+token.getUseTime()+"").getBytes())); + return new Res<>(Result.OK,"登陆成功",token); + } + } + +// 注册 + @PostMapping("register") + @ResponseBody + public Res register(@RequestBody ManagerRegister manager){ + if(StringUtils.isEmpty(manager.getManagerName())){ + return new Res<>(Result.FAIL,"管理员不能为空",null); + }else if(StringUtils.isEmpty(manager.getPassword())){ + return new Res<>(Result.FAIL,"密码不能为空",null); + }else if(StringUtils.isEmpty(manager.getConfirmPassword())){ + return new Res<>(Result.FAIL,"确认密码不能为空",null); + }else if(!manager.getPassword().equals(manager.getConfirmPassword())){ + return new Res<>(Result.FAIL,"两次密码输入不一致",null); + }else if(StringUtils.isEmpty(manager.getMobie())){ + return new Res<>(Result.FAIL,"手机号不能为空",null); + }else if(StringUtils.isEmpty(manager.getEmail())){ + return new Res<>(Result.FAIL,"邮箱不能为空",null); + }else if(managerDao.hasUser(manager.getManagerName())){ + return new Res<>(Result.FAIL,"用户已存在",null); + }else{ + Manager m=new Manager(); + m.setManagerName(manager.getManagerName()); + m.setPassword(DigestUtils.md5DigestAsHex(manager.getPassword().getBytes())); + m.setMobie(manager.getMobie()); + m.setEmail(manager.getEmail()); + managerDao.save(m); + return new Res<>(Result.OK,"注册成功",null); + } + } + +} diff --git a/src/main/java/com/community/pocket/domain/Forum.java b/src/main/java/com/community/pocket/domain/Forum.java new file mode 100644 index 0000000..38318b0 --- /dev/null +++ b/src/main/java/com/community/pocket/domain/Forum.java @@ -0,0 +1,17 @@ +package com.community.pocket.domain; + +import org.springframework.data.annotation.Id; + +//论坛贴 +public class Forum { + @Id + private String id; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/src/main/java/com/community/pocket/domain/Manager.java b/src/main/java/com/community/pocket/domain/Manager.java new file mode 100644 index 0000000..90620c9 --- /dev/null +++ b/src/main/java/com/community/pocket/domain/Manager.java @@ -0,0 +1,56 @@ +package com.community.pocket.domain; + +import org.springframework.data.annotation.Id; + +public class Manager { + @Id + private String id; +// 管理员 + private String managerName; +// 密码 + private String password; +// 手机号 + private Long mobie; +// 邮箱 + private String email; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getManagerName() { + return managerName; + } + + public void setManagerName(String managerName) { + this.managerName = managerName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Long getMobie() { + return mobie; + } + + public void setMobie(Long mobie) { + this.mobie = mobie; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} diff --git a/src/main/java/com/community/pocket/domain/Res.java b/src/main/java/com/community/pocket/domain/Res.java new file mode 100644 index 0000000..e0118be --- /dev/null +++ b/src/main/java/com/community/pocket/domain/Res.java @@ -0,0 +1,43 @@ +package com.community.pocket.domain; + +import com.community.pocket.Result; + +public class Res { +// 响应码 + private Result result; + private String message; + private T body; + + public Res() { + } + + public Res(Result result, String message, T body) { + this.result = result; + this.message = message; + this.body = body; + } + + public Result getResult() { + return result; + } + + public void setResult(Result result) { + this.result = result; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getBody() { + return body; + } + + public void setBody(T body) { + this.body = body; + } +} diff --git a/src/main/java/com/community/pocket/domain/Token.java b/src/main/java/com/community/pocket/domain/Token.java new file mode 100644 index 0000000..927b132 --- /dev/null +++ b/src/main/java/com/community/pocket/domain/Token.java @@ -0,0 +1,43 @@ +package com.community.pocket.domain; + +import org.springframework.data.annotation.Id; + +public class Token { + @Id + private String id; + private String token; + private Long createTime; + private Long useTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public Long getCreateTime() { + return createTime; + } + + public void setCreateTime(Long createTime) { + this.createTime = createTime; + } + + public Long getUseTime() { + return useTime; + } + + public void setUseTime(Long useTime) { + this.useTime = useTime; + } +} diff --git a/src/main/java/com/community/pocket/domain/form/ManagerLogin.java b/src/main/java/com/community/pocket/domain/form/ManagerLogin.java new file mode 100644 index 0000000..e5bea39 --- /dev/null +++ b/src/main/java/com/community/pocket/domain/form/ManagerLogin.java @@ -0,0 +1,22 @@ +package com.community.pocket.domain.form; + +public class ManagerLogin { + private String managerName; + private String password; + + public String getManagerName() { + return managerName; + } + + public void setManagerName(String managerName) { + this.managerName = managerName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/src/main/java/com/community/pocket/domain/form/ManagerRegister.java b/src/main/java/com/community/pocket/domain/form/ManagerRegister.java new file mode 100644 index 0000000..1c13794 --- /dev/null +++ b/src/main/java/com/community/pocket/domain/form/ManagerRegister.java @@ -0,0 +1,54 @@ +package com.community.pocket.domain.form; + +public class ManagerRegister { + // 管理员 + private String managerName; + // 密码 + private String password; + // 确认密码 + private String confirmPassword; + // 手机号 + private Long mobie; + // 邮箱 + private String email; + + public String getManagerName() { + return managerName; + } + + public void setManagerName(String managerName) { + this.managerName = managerName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getConfirmPassword() { + return confirmPassword; + } + + public void setConfirmPassword(String confirmPassword) { + this.confirmPassword = confirmPassword; + } + + public Long getMobie() { + return mobie; + } + + public void setMobie(Long mobie) { + this.mobie = mobie; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} diff --git a/src/main/java/com/community/pocket/repository/ForumRepo.java b/src/main/java/com/community/pocket/repository/ForumRepo.java new file mode 100644 index 0000000..ff4c732 --- /dev/null +++ b/src/main/java/com/community/pocket/repository/ForumRepo.java @@ -0,0 +1,9 @@ +package com.community.pocket.repository; + +import com.community.pocket.domain.Forum; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +@RepositoryRestResource +public interface ForumRepo extends MongoRepository { +} diff --git a/src/main/java/com/community/pocket/repository/ManagerDao.java b/src/main/java/com/community/pocket/repository/ManagerDao.java new file mode 100644 index 0000000..0f0910a --- /dev/null +++ b/src/main/java/com/community/pocket/repository/ManagerDao.java @@ -0,0 +1,47 @@ +package com.community.pocket.repository; + +import com.community.pocket.domain.Manager; +import com.community.pocket.domain.form.ManagerLogin; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Repository; +import org.springframework.util.DigestUtils; + +@Repository +public class ManagerDao { + + @Autowired + private MongoTemplate mongoTemplate; + + public boolean login(ManagerLogin managerLogin){ + Criteria criteria=Criteria.where("managerName").is(managerLogin.getManagerName()); + try { + Manager manager= mongoTemplate.findOne(new Query(criteria), Manager.class); + return manager!=null&&manager.getManagerName().equals(managerLogin.getManagerName())&&manager.getPassword().equals(DigestUtils.md5DigestAsHex(managerLogin.getPassword().getBytes())); + } catch (Exception e) { + return false; + } + + } + + // 查用户 + public boolean hasUser(String name){ + try { + Manager manager=mongoTemplate.findOne(new Query(Criteria.where("managerName").is(name)),Manager.class); + return manager!=null; + } catch (Exception e) { + return false; + } + } + + public boolean save(Manager manager){ + try { + mongoTemplate.save(manager); + return true; + } catch (Exception e) { + return false; + } + } +} diff --git a/src/main/java/com/community/pocket/repository/ManagerRepo.java b/src/main/java/com/community/pocket/repository/ManagerRepo.java new file mode 100644 index 0000000..c314fe4 --- /dev/null +++ b/src/main/java/com/community/pocket/repository/ManagerRepo.java @@ -0,0 +1,9 @@ +package com.community.pocket.repository; + +import com.community.pocket.domain.Manager; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +@RepositoryRestResource +public interface ManagerRepo extends MongoRepository { +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..64d7998 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,3 @@ +#spring.data.mongodb.uri=mongodb://localhost:27017/demo +#spring.datasource +#spring.datasource.url=mongodb://localhost:27017/demo \ No newline at end of file diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml new file mode 100644 index 0000000..32489c0 --- /dev/null +++ b/src/main/resources/application.yaml @@ -0,0 +1,4 @@ +spring: + data: + mongodb: + database: demo \ No newline at end of file diff --git a/src/test/java/com/community/pocket/DemoApplicationTests.java b/src/test/java/com/community/pocket/DemoApplicationTests.java new file mode 100644 index 0000000..4f9657e --- /dev/null +++ b/src/test/java/com/community/pocket/DemoApplicationTests.java @@ -0,0 +1,13 @@ +package com.community.pocket; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class DemoApplicationTests { + + @Test + void contextLoads() { + } + +}