我创建了 yaml 文件(openapi 3.0.0 格式)作为我们 API 的文档。我想在应用程序运行的 URL 上显示这个(静态)swagger-ui yaml 文件。类似http://localhost:8080/swagger-ui 的东西。yaml 文件的图形表示在哪里显示(与此处相同)。Yaml 文件放置在项目的根文件夹中。
我在 java 11, springboot 2.1.5 上运行应用程序,使用 maven 构建。
我尝试使用代码从代码中生成 swagger yaml
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但这并不完美(缺少默认值、描述..)
我试过 spring 静态资源但没有成功。问题是 yaml 文件不是 html。
还有另一种(也许更好)的方式,如何显示 api 文档?
如何从 java springboot 应用程序中的配置 yml 文件加载对象列表?
我已经尝试了几个来源:
spring-boot-configurationproperties-example
堆栈:Java 11、SpringBoot 2.1.4、Lombok、.yml 格式的配置文件。
我尝试实现简单的@Component,它将从配置文件加载数据。
配置值为:
allowed:
- first-crossroad: ONE
second-crossroad: TWO
third-crossroad: TWO
fourth-crossroad: THREE
- first-crossroad: ONE
second-crossroad: THREE
third-crossroad: TWO
fourth-crossroad: ONE
Run Code Online (Sandbox Code Playgroud)
用于数据加载的 Java 类是:
allowed:
- first-crossroad: ONE
second-crossroad: TWO
third-crossroad: TWO
fourth-crossroad: THREE
- first-crossroad: ONE
second-crossroad: THREE
third-crossroad: TWO
fourth-crossroad: ONE
Run Code Online (Sandbox Code Playgroud)
Java CrossroadCombination 对象定义:
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "")
@Data
public class AllowedCrossroads {
private List<CrossroadCombination> allowed;
}
Run Code Online (Sandbox Code Playgroud)
我希望在应用程序运行期间加载值。但我收到错误:
Property: allowed[0].first-crossroad
Value: …
Run Code Online (Sandbox Code Playgroud) 我的堆栈:
我们想开始在Spock测试框架中编写测试。我遵循了此方法,但是没有成功。当我尝试运行所有测试时,我的Spock测试未运行。
我能够进行一项测试。我可以在测试上“右键单击”并运行它。但是,如果我尝试运行整个groovy软件包(或Java软件包下的某些软件包),它将不会运行那些groovy测试。它不会运行意味着出现以下错误:
Jul 24, 2019 8:33:47 AM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests
java.lang.NoClassDefFoundError: org/junit/platform/engine/support/discovery/SelectorResolver
at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:69)
at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:168)
at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:155)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.engine.support.discovery.SelectorResolver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 8 more
Jul 24, 2019 8:33:47 AM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-vintage' failed …
Run Code Online (Sandbox Code Playgroud)