Skip to content

Commit

Permalink
Make sure that Spring Boot versions are available
Browse files Browse the repository at this point in the history
  • Loading branch information
snicoll committed Jun 2, 2021
1 parent aceba1c commit 8f97ee0
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 4 deletions.
22 changes: 19 additions & 3 deletions initializr-service-sample/README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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.


Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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;

/**
Expand All @@ -35,4 +40,11 @@ public static void main(String[] args) {
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);
}

}

0 comments on commit 8f97ee0

Please sign in to comment.