Update to leverage @RegisterReflectionForBinding

See spring-projects/spring-framework#28979
This commit is contained in:
Sébastien Deleuze
2022-09-02 17:43:29 +02:00
parent 444a022915
commit af5e6de4e4
8 changed files with 10 additions and 78 deletions

View File

@@ -1,17 +1,14 @@
package com.example.data.redis.reactive;
import com.example.data.redis.reactive.DataRedisReactiveApplication.PersonRuntimeHints;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.aot.hint.RuntimeHintsRegistrar;
import org.springframework.aot.hint.annotation.RegisterReflectionForBinding;
import org.springframework.aot.smoketest.thirdpartyhints.NettyRuntimeHints;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportRuntimeHints;
import org.springframework.context.aot.BindingReflectionHintsRegistrar;
@SpringBootApplication
@ImportRuntimeHints({ NettyRuntimeHints.class, PersonRuntimeHints.class })
@ImportRuntimeHints(NettyRuntimeHints.class)
@RegisterReflectionForBinding(Person.class)
public class DataRedisReactiveApplication {
public static void main(String[] args) throws InterruptedException {
@@ -19,15 +16,4 @@ public class DataRedisReactiveApplication {
Thread.currentThread().join(); // To be able to measure memory consumption
}
static class PersonRuntimeHints implements RuntimeHintsRegistrar {
private final BindingReflectionHintsRegistrar bindingReflectionHintsRegistrar = new BindingReflectionHintsRegistrar();
@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
this.bindingReflectionHintsRegistrar.registerReflectionHints(hints.reflection(), Person.class);
}
}
}

View File

@@ -1,19 +1,9 @@
package com.example.quartz;
import java.util.function.Consumer;
import com.example.quartz.QuartzApplication.QuartzApplicationHints;
import org.springframework.aot.hint.MemberCategory;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.aot.hint.RuntimeHintsRegistrar;
import org.springframework.aot.hint.TypeHint.Builder;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportRuntimeHints;
@SpringBootApplication
@ImportRuntimeHints({ QuartzApplicationHints.class })
public class QuartzApplication {
public static void main(String[] args) throws InterruptedException {
@@ -21,17 +11,4 @@ public class QuartzApplication {
Thread.currentThread().join(); // To be able to measure memory consumption
}
static class QuartzApplicationHints implements RuntimeHintsRegistrar {
private static final Consumer<Builder> ALL_REFLECTION_HINTS = (builder) -> builder.withMembers(
MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_PUBLIC_METHODS,
MemberCategory.DECLARED_FIELDS);
@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
hints.reflection().registerType(SimpleJob.class, ALL_REFLECTION_HINTS);
}
}
}

View File

@@ -6,6 +6,7 @@ import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.springframework.aot.hint.annotation.RegisterReflectionForBinding;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -13,6 +14,7 @@ import org.springframework.context.annotation.Configuration;
class QuartzConfiguration {
@Bean
@RegisterReflectionForBinding(SimpleJob.class)
public JobDetail simpleJobDetail() {
return JobBuilder.newJob(SimpleJob.class).withIdentity("simpleJob").usingJobData("greeting", "Hello world!")
.storeDurably().build();

View File

@@ -3,16 +3,14 @@ package com.example.resttemplate;
import java.net.URI;
import java.time.Duration;
import com.example.resttemplate.DataDto.DataDtoRuntimeHints;
import org.springframework.aot.hint.annotation.RegisterReflectionForBinding;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.ImportRuntimeHints;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
@Component
@ImportRuntimeHints(DataDtoRuntimeHints.class)
@RegisterReflectionForBinding(DataDto.class)
class CLR implements CommandLineRunner {
private final RestTemplateBuilder restTemplateBuilder;

View File

@@ -1,9 +1,5 @@
package com.example.resttemplate;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.aot.hint.RuntimeHintsRegistrar;
import org.springframework.context.aot.BindingReflectionHintsRegistrar;
public class DataDto {
private String url;
@@ -34,15 +30,4 @@ public class DataDto {
return "DataDto{" + "url='" + url + '\'' + ", method='" + method + '\'' + '}';
}
static class DataDtoRuntimeHints implements RuntimeHintsRegistrar {
private final BindingReflectionHintsRegistrar bindingReflectionHintsRegistrar = new BindingReflectionHintsRegistrar();
@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
this.bindingReflectionHintsRegistrar.registerReflectionHints(hints.reflection(), DataDto.class);
}
}
}

View File

@@ -0,0 +1 @@
Args = --enable-url-protocols=http,https

View File

@@ -2,16 +2,14 @@ package com.example.webclient;
import java.time.Duration;
import com.example.webclient.DataDto.DataDtoRuntimeHints;
import org.springframework.aot.hint.annotation.RegisterReflectionForBinding;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.ImportRuntimeHints;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.reactive.function.client.WebClient.Builder;
@Component
@ImportRuntimeHints(DataDtoRuntimeHints.class)
@RegisterReflectionForBinding(DataDto.class)
class CLR implements CommandLineRunner {
private final Builder webClientBuilder;

View File

@@ -1,9 +1,5 @@
package com.example.webclient;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.aot.hint.RuntimeHintsRegistrar;
import org.springframework.context.aot.BindingReflectionHintsRegistrar;
public class DataDto {
private String url;
@@ -34,15 +30,4 @@ public class DataDto {
return "DataDto{" + "url='" + url + '\'' + ", method='" + method + '\'' + '}';
}
static class DataDtoRuntimeHints implements RuntimeHintsRegistrar {
private final BindingReflectionHintsRegistrar bindingReflectionHintsRegistrar = new BindingReflectionHintsRegistrar();
@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
this.bindingReflectionHintsRegistrar.registerReflectionHints(hints.reflection(), DataDto.class);
}
}
}