From f53e0d098ef417a0f6438f91efb24a7d2bf34daf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Sun, 16 Oct 2022 21:21:27 +0200 Subject: [PATCH] Additional setup to support native image creation. - Switch to Caffeine for caching since it is supported on native unlike Ehcache - Use latest metadata repository 0.2.3 (will be the default with Native Build Tools 0.9.15) - Registers resource hints for WebJars and db resource directory --- pom.xml | 5 ++-- .../petclinic/PetClinicApplication.java | 2 ++ .../petclinic/PetClinicRuntimeHints.java | 30 +++++++++++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/springframework/samples/petclinic/PetClinicRuntimeHints.java diff --git a/pom.xml b/pom.xml index 3cce0f816..29772e690 100644 --- a/pom.xml +++ b/pom.xml @@ -84,9 +84,8 @@ cache-api - org.ehcache - ehcache - jakarta + com.github.ben-manes.caffeine + caffeine diff --git a/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java b/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java index 0b2ffc129..ac6e15030 100644 --- a/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java +++ b/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java @@ -18,6 +18,7 @@ package org.springframework.samples.petclinic; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ImportRuntimeHints; /** * PetClinic Spring Boot Application. @@ -26,6 +27,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * */ @SpringBootApplication +@ImportRuntimeHints(PetClinicRuntimeHints.class) public class PetClinicApplication { public static void main(String[] args) { diff --git a/src/main/java/org/springframework/samples/petclinic/PetClinicRuntimeHints.java b/src/main/java/org/springframework/samples/petclinic/PetClinicRuntimeHints.java new file mode 100644 index 000000000..237897d5e --- /dev/null +++ b/src/main/java/org/springframework/samples/petclinic/PetClinicRuntimeHints.java @@ -0,0 +1,30 @@ +/* + * Copyright 2012-2019 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. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.samples.petclinic; + +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; + +public class PetClinicRuntimeHints implements RuntimeHintsRegistrar { + + @Override + public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + hints.resources().registerPattern("db/*"); // https://github.com/spring-projects/spring-boot/issues/32654 + hints.resources().registerPattern("META-INF/resources/webjars/*"); + } + +}