diff --git a/initializr-service-sample/README.adoc b/initializr-service-sample/README.adoc index c6cc93dd..3672bcbb 100644 --- a/initializr-service-sample/README.adoc +++ b/initializr-service-sample/README.adoc @@ -43,8 +43,24 @@ If you have the `spring` CLI installed, you can also use it as follows: Finally, you can configure your IDE to point to another service instance. == Configuration -The configuration in `application.yml` is very simple with a single `web` dependency that -brings `spring-boot-starter-web`. You can experiment by adding more dependencies or other -elements that drive how projects are generated. +There are two main customizations to the sample. + +=== Metadata Update Strategy +First, `ServiceApplication` has a dedicated strategy to update the metadata with the available Spring Boot versions from Sagan (`spring.io`). +When you issue your first request, you should see something like the following: + +[indent=0] +---- +Fetching Spring Boot metadata from https://spring.io/project_metadata/spring-boot +---- + +On further request, you won't see this log entry as the content is cached. +There are no expiration set, so the available versions won't change until you restart the service. + +=== Basic Metadata +The configuration in `application.yml` is very simple with a single `web` dependency that brings `spring-boot-starter-web`. +The default `groupId` for generated projects has been customized to `org.acme`. + +You can experiment by adding more dependencies or other elements that drive how projects are generated. diff --git a/initializr-service-sample/src/main/java/sample/service/ServiceApplication.java b/initializr-service-sample/src/main/java/sample/service/ServiceApplication.java index 0d2653d2..068b7a5b 100644 --- a/initializr-service-sample/src/main/java/sample/service/ServiceApplication.java +++ b/initializr-service-sample/src/main/java/sample/service/ServiceApplication.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2021 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. @@ -16,9 +16,14 @@ package sample.service; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.spring.initializr.web.support.SaganInitializrMetadataUpdateStrategy; + import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; import org.springframework.scheduling.annotation.EnableAsync; /** @@ -35,4 +40,11 @@ public class ServiceApplication { SpringApplication.run(ServiceApplication.class, args); } + // This bean opt-in for fetching available Spring Boot versions from Sagan (spring.io) + @Bean + SaganInitializrMetadataUpdateStrategy saganInitializrMetadataUpdateStrategy(RestTemplateBuilder restTemplateBuilder, + ObjectMapper objectMapper) { + return new SaganInitializrMetadataUpdateStrategy(restTemplateBuilder.build(), objectMapper); + } + }