Inicio Rápido
Conecta el source del backend con Entity, Handler y Swagger watcher, y verifica los resultados de la creación inicial.
Configuración local completa
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();
}
}Primera ejecución y detección de cambios
start() crea una instancia de watcher y ejecuta la primera pasada de generación, luego se suscribe a eventos de cambio de fuente. Agrupa varios eventos de archivo según debounceMillis y vuelve a generar.