快速开始
以后端源为基础,连接实体、处理程序和 Swagger 观察者,并检查初始生成结果.
整体本地设置
WatchForMainRunSpring.java
java@Configuration
@Profile("local")
public class WatchForMainRunSpring {
private WatchForMainRun runner;
@PostConstruct
public void start() {
var entityConfig = EntityFileWatcher.Config.builder()
.rootPath("src.main.java")
.entityPackage("com.example.entity")
.fieldPackage("com.example.util.fields")
.collectionNamePackage("com.example.util")
.build();
var handlerConfig = HandlerGenerator.Config.builder()
.rootPath("src.main.java")
.routerPackage("com.example.web.router")
.handlerOutputDir("src.main.java.com.example.web.handler")
.addAutoImport(ReactiveMongoDsl.class)
.addAutoImport(ResponseWrapper.class)
.addStaticAutoImport(
HandlerGenerator.StaticImportSpec.of(ResponseWrapper.class, "response")
)
.addStaticAutoImport(
HandlerGenerator.StaticImportSpec.of(FieldsPair.class, "pair")
)
.build();
var swaggerConfig = SwaggerJsonFileWatcher.Config.builder()
.watchDirectory("src/main/java")
.swaggerOutputFile("src/main/resources/static/swagger.json")
.build();
runner = new WatchForMainRun(
WatchForMainRun.Config.builder()
.debounceMillis(400)
.entityConfig(entityConfig)
.handlerConfig(handlerConfig)
.swaggerConfig(swaggerConfig)
.build()
);
try {
runner.start();
} catch (Exception e) {
throw new IllegalStateException("Failed to start development watchers", e);
}
}
@PreDestroy
public void stop() {
if (runner != null) runner.stop();
}
}首次执行与变更检测
start()创建观察者实例并执行首次生成过程,然后订阅源更改事件。多个文件事件根据debounceMillis进行合并并重新生成。