快速開始
以後端來源為基準,連接實體、處理器與 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 進行合併並重新生成。