From a7e565e7440e59cacce2df62c59835bc9f745710 Mon Sep 17 00:00:00 2001
From: Peter Hoffmann <954078+p-hoffmann@users.noreply.github.com>
Date: Sun, 8 Feb 2026 22:57:15 +0800
Subject: [PATCH] Improve startup time
---
pom.xml | 11 +++
.../java/org/ohdsi/webapi/CacheConfig.java | 2 +
.../org/ohdsi/webapi/DataAccessConfig.java | 2 +
.../java/org/ohdsi/webapi/FlywayConfig.java | 2 +
src/main/java/org/ohdsi/webapi/JobConfig.java | 2 +
.../java/org/ohdsi/webapi/JobInvalidator.java | 10 +--
.../org/ohdsi/webapi/LogConfiguration.java | 24 ------
.../ohdsi/webapi/SchedulerConfiguration.java | 2 +
.../org/ohdsi/webapi/ShiroConfiguration.java | 15 +---
.../ExampleApplicationConfig.java | 16 ----
.../webapi/security/PermissionService.java | 8 +-
.../webapi/service/CDMResultsService.java | 16 ++--
.../service/CohortGenerationService.java | 9 +-
.../shiro/annotations/CcGenerationId.java | 11 ---
.../shiro/annotations/DataSourceAccess.java | 11 ---
.../webapi/shiro/annotations/SourceId.java | 11 ---
.../webapi/shiro/annotations/SourceKey.java | 11 ---
.../DataSourceAccessBeanPostProcessor.java | 85 -------------------
.../shiro/management/DisabledSecurity.java | 2 -
.../datasource/AccessorParameterBinding.java | 20 -----
.../DataSourceAccessParameterResolver.java | 52 ------------
.../ohdsi/webapi/source/SourceService.java | 8 +-
src/main/resources/application.yaml | 12 +--
23 files changed, 54 insertions(+), 288 deletions(-)
delete mode 100644 src/main/java/org/ohdsi/webapi/LogConfiguration.java
delete mode 100644 src/main/java/org/ohdsi/webapi/exampleapplication/ExampleApplicationConfig.java
delete mode 100644 src/main/java/org/ohdsi/webapi/shiro/annotations/CcGenerationId.java
delete mode 100644 src/main/java/org/ohdsi/webapi/shiro/annotations/DataSourceAccess.java
delete mode 100644 src/main/java/org/ohdsi/webapi/shiro/annotations/SourceId.java
delete mode 100644 src/main/java/org/ohdsi/webapi/shiro/annotations/SourceKey.java
delete mode 100644 src/main/java/org/ohdsi/webapi/shiro/management/DataSourceAccessBeanPostProcessor.java
delete mode 100644 src/main/java/org/ohdsi/webapi/shiro/management/datasource/AccessorParameterBinding.java
delete mode 100644 src/main/java/org/ohdsi/webapi/shiro/management/datasource/DataSourceAccessParameterResolver.java
diff --git a/pom.xml b/pom.xml
index 7653c5c55c..6981c87539 100644
--- a/pom.xml
+++ b/pom.xml
@@ -217,6 +217,17 @@
+
+ io.smallrye
+ jandex-maven-plugin
+ 3.2.7
+
+
+ make-index
+ jandex
+
+
+
com.qmino
miredot-plugin
diff --git a/src/main/java/org/ohdsi/webapi/CacheConfig.java b/src/main/java/org/ohdsi/webapi/CacheConfig.java
index 8e9eecf418..da855bc674 100644
--- a/src/main/java/org/ohdsi/webapi/CacheConfig.java
+++ b/src/main/java/org/ohdsi/webapi/CacheConfig.java
@@ -2,8 +2,10 @@
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
@Configuration
+@Lazy(false)
@EnableCaching
public class CacheConfig {
diff --git a/src/main/java/org/ohdsi/webapi/DataAccessConfig.java b/src/main/java/org/ohdsi/webapi/DataAccessConfig.java
index fa585bf6b4..f94e1dc375 100644
--- a/src/main/java/org/ohdsi/webapi/DataAccessConfig.java
+++ b/src/main/java/org/ohdsi/webapi/DataAccessConfig.java
@@ -11,6 +11,7 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
+import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@@ -36,6 +37,7 @@
*
*/
@Configuration
+@Lazy(false)
@EnableTransactionManagement
@EnableJpaRepositories(repositoryFactoryBeanClass = EntityGraphJpaRepositoryFactoryBean.class)
public class DataAccessConfig {
diff --git a/src/main/java/org/ohdsi/webapi/FlywayConfig.java b/src/main/java/org/ohdsi/webapi/FlywayConfig.java
index e4523178c3..f369cb6b2d 100644
--- a/src/main/java/org/ohdsi/webapi/FlywayConfig.java
+++ b/src/main/java/org/ohdsi/webapi/FlywayConfig.java
@@ -9,6 +9,7 @@
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
import com.zaxxer.hikari.HikariDataSource;
@@ -19,6 +20,7 @@
* Java-based migrations can access Spring beans via the static ApplicationContextHolder.
*/
@Configuration
+@Lazy(false)
@ConditionalOnProperty(prefix = "spring.flyway", name = "enabled", matchIfMissing = true)
public class FlywayConfig {
diff --git a/src/main/java/org/ohdsi/webapi/JobConfig.java b/src/main/java/org/ohdsi/webapi/JobConfig.java
index 4164ba77d6..60807390fe 100644
--- a/src/main/java/org/ohdsi/webapi/JobConfig.java
+++ b/src/main/java/org/ohdsi/webapi/JobConfig.java
@@ -26,6 +26,7 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
+import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Primary;
import org.springframework.core.task.TaskExecutor;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -36,6 +37,7 @@
* Spring Batch 5.x configuration for Java 21 / Spring Boot 3.2
*/
@Configuration
+@Lazy(false)
@EnableBatchProcessing
public class JobConfig {
diff --git a/src/main/java/org/ohdsi/webapi/JobInvalidator.java b/src/main/java/org/ohdsi/webapi/JobInvalidator.java
index cfe17febea..442001e375 100644
--- a/src/main/java/org/ohdsi/webapi/JobInvalidator.java
+++ b/src/main/java/org/ohdsi/webapi/JobInvalidator.java
@@ -9,15 +9,15 @@
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;
import org.springframework.transaction.support.TransactionTemplate;
-import jakarta.annotation.PostConstruct;
import java.util.Calendar;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.event.EventListener;
+
@Component
-@DependsOn("flyway")
public class JobInvalidator {
private static final Logger log = LoggerFactory.getLogger(JobInvalidator.class);
@@ -37,8 +37,8 @@ public JobInvalidator(JobRepository repository,
this.jobExecutionDao = jobExecutionDao;
}
- @PostConstruct
- private void invalidateGenerations() {
+ @EventListener(ApplicationReadyEvent.class)
+ public void invalidateGenerations() {
transactionTemplateRequiresNew.execute(s -> {
jobExecutionDao.getRunningJobExecutions().forEach(this::invalidationJobExecution);
return null;
diff --git a/src/main/java/org/ohdsi/webapi/LogConfiguration.java b/src/main/java/org/ohdsi/webapi/LogConfiguration.java
deleted file mode 100644
index 4192349454..0000000000
--- a/src/main/java/org/ohdsi/webapi/LogConfiguration.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.ohdsi.webapi;
-
-// import org.ohdsi.webapi.arachne.logging.LoggingEventMessageFactory; // Not needed
-// import org.ohdsi.webapi.arachne.logging.LoggingService; // Not needed
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class LogConfiguration {
-
- // Commented out - LoggingService and LoggingEventMessageFactory not available
- // These were part of Arachne logging dependency that was removed
- /*
- @Bean
- public LoggingEventMessageFactory loggingEventMessageFactory(){
- return new LoggingEventMessageFactory();
- }
-
- @Bean
- public LoggingService loggingService(LoggingEventMessageFactory factory){
- return new LoggingService(factory);
- }
- */
-}
diff --git a/src/main/java/org/ohdsi/webapi/SchedulerConfiguration.java b/src/main/java/org/ohdsi/webapi/SchedulerConfiguration.java
index f00510021e..d27934b68d 100644
--- a/src/main/java/org/ohdsi/webapi/SchedulerConfiguration.java
+++ b/src/main/java/org/ohdsi/webapi/SchedulerConfiguration.java
@@ -4,12 +4,14 @@
import com.cronutils.model.definition.CronDefinitionBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import static com.cronutils.model.CronType.QUARTZ;
@Configuration
+@Lazy(false)
public class SchedulerConfiguration {
@Bean
diff --git a/src/main/java/org/ohdsi/webapi/ShiroConfiguration.java b/src/main/java/org/ohdsi/webapi/ShiroConfiguration.java
index 301998d595..12fa38dffd 100644
--- a/src/main/java/org/ohdsi/webapi/ShiroConfiguration.java
+++ b/src/main/java/org/ohdsi/webapi/ShiroConfiguration.java
@@ -9,10 +9,7 @@
import org.apache.shiro.web.servlet.AbstractShiroFilter;
import org.ohdsi.webapi.shiro.AtlasWebSecurityManager;
import org.ohdsi.webapi.shiro.lockout.*;
-import org.ohdsi.webapi.shiro.management.DataSourceAccessBeanPostProcessor;
-import org.ohdsi.webapi.shiro.management.DisabledSecurity;
import org.ohdsi.webapi.shiro.management.Security;
-import org.ohdsi.webapi.shiro.management.datasource.DataSourceAccessParameterResolver;
import org.ohdsi.webapi.shiro.realms.JwtAuthRealm;
import org.ohdsi.webapi.shiro.subject.WebDelegatingRunAsSubjectFactory;
import org.slf4j.Logger;
@@ -20,13 +17,13 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
+import org.springframework.context.annotation.Lazy;
import jakarta.servlet.Filter;
import java.util.Map;
@@ -37,6 +34,7 @@
*/
@Configuration
+@Lazy(false)
public class ShiroConfiguration {
private static final Logger log = LoggerFactory.getLogger(ShiroConfiguration.class);
@@ -47,8 +45,6 @@ public class ShiroConfiguration {
private long initialDuration;
@Value("${security.duration.increment}")
private long increment;
- @Value("${spring.aop.proxy-target-class:false}")
- private Boolean proxyTargetClass;
@Autowired
protected ApplicationEventPublisher eventPublisher;
@@ -121,13 +117,6 @@ public LockoutStrategy lockoutStrategy() {
return new ExponentLockoutStrategy(initialDuration, increment, maxLoginAttempts);
}
- @Bean
- @ConditionalOnMissingBean(value = DisabledSecurity.class)
- public DataSourceAccessBeanPostProcessor dataSourceAccessBeanPostProcessor(DataSourceAccessParameterResolver parameterResolver) {
-
- return new DataSourceAccessBeanPostProcessor(parameterResolver, proxyTargetClass);
- }
-
/**
* Register the Shiro filter with the servlet container.
* This is necessary for Spring Boot to properly apply the filter to all requests.
diff --git a/src/main/java/org/ohdsi/webapi/exampleapplication/ExampleApplicationConfig.java b/src/main/java/org/ohdsi/webapi/exampleapplication/ExampleApplicationConfig.java
deleted file mode 100644
index 5f89eb0439..0000000000
--- a/src/main/java/org/ohdsi/webapi/exampleapplication/ExampleApplicationConfig.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.ohdsi.webapi.exampleapplication;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.annotation.Configuration;
-
-/**
- *
- */
-@Configuration
-public class ExampleApplicationConfig {
-
- private static final Logger log = LoggerFactory.getLogger(ExampleApplicationConfig.class);
-
- //random @Beans
-}
diff --git a/src/main/java/org/ohdsi/webapi/security/PermissionService.java b/src/main/java/org/ohdsi/webapi/security/PermissionService.java
index 9516cede5c..924b563f46 100644
--- a/src/main/java/org/ohdsi/webapi/security/PermissionService.java
+++ b/src/main/java/org/ohdsi/webapi/security/PermissionService.java
@@ -43,8 +43,10 @@
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.WebApplicationContext;
-import jakarta.annotation.PostConstruct;
import java.io.Serializable;
+
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.event.EventListener;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -106,8 +108,8 @@ public PermissionService(
this.conversionService = conversionService;
}
- @PostConstruct
- private void postConstruct() {
+ @EventListener(ApplicationReadyEvent.class)
+ public void postConstruct() {
this.repositories = new Repositories(appContext);
diff --git a/src/main/java/org/ohdsi/webapi/service/CDMResultsService.java b/src/main/java/org/ohdsi/webapi/service/CDMResultsService.java
index 825c7be5e4..d7ffecdf02 100644
--- a/src/main/java/org/ohdsi/webapi/service/CDMResultsService.java
+++ b/src/main/java/org/ohdsi/webapi/service/CDMResultsService.java
@@ -34,11 +34,9 @@
import org.springframework.batch.core.job.builder.SimpleJobBuilder;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.core.step.builder.StepBuilder;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.DependsOn;
import org.springframework.core.convert.ConversionService;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@@ -52,8 +50,11 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.event.EventListener;
import org.springframework.web.server.ResponseStatusException;
+import jakarta.annotation.PostConstruct;
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Collection;
@@ -79,8 +80,7 @@
*/
@RestController
@RequestMapping("/cdmresults")
-@DependsOn({"jobInvalidator", "flyway"})
-public class CDMResultsService extends AbstractDaoService implements InitializingBean {
+public class CDMResultsService extends AbstractDaoService {
private final Logger logger = LoggerFactory.getLogger(CDMResultsService.class);
private static final String CONCEPT_COUNT_SQL = "/resources/cdmresults/sql/getConceptRecordCount.sql";
@@ -135,9 +135,13 @@ public class CDMResultsService extends AbstractDaoService implements Initializin
@Autowired
private ConversionService conversionService;
- @Override
- public void afterPropertiesSet() throws Exception {
+ @PostConstruct
+ public void initQueryRunner() {
queryRunner.init(this.getSourceDialect(), objectMapper);
+ }
+
+ @EventListener(ApplicationReadyEvent.class)
+ public void onApplicationReady() {
warmCaches();
}
diff --git a/src/main/java/org/ohdsi/webapi/service/CohortGenerationService.java b/src/main/java/org/ohdsi/webapi/service/CohortGenerationService.java
index 27f19c9980..5eb9527278 100644
--- a/src/main/java/org/ohdsi/webapi/service/CohortGenerationService.java
+++ b/src/main/java/org/ohdsi/webapi/service/CohortGenerationService.java
@@ -31,7 +31,6 @@
import org.springframework.batch.repeat.exception.ExceptionHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.DependsOn;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
@@ -39,9 +38,10 @@
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.support.TransactionTemplate;
-import jakarta.annotation.PostConstruct;
-
import java.util.Arrays;
+
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.event.EventListener;
import java.util.Calendar;
import java.util.List;
import java.util.Objects;
@@ -57,7 +57,6 @@
import static org.ohdsi.webapi.Constants.Params.DEMOGRAPHIC_STATS;
@Component
-@DependsOn("flyway")
public class CohortGenerationService extends AbstractDaoService implements GeneratesNotification {
private final CohortDefinitionRepository cohortDefinitionRepository;
@@ -193,7 +192,7 @@ private JobParametersBuilder getJobParametersBuilder(Source source, CohortDefini
return builder;
}
- @PostConstruct
+ @EventListener(ApplicationReadyEvent.class)
public void init(){
invalidateCohortGenerations();
diff --git a/src/main/java/org/ohdsi/webapi/shiro/annotations/CcGenerationId.java b/src/main/java/org/ohdsi/webapi/shiro/annotations/CcGenerationId.java
deleted file mode 100644
index 8c6e7b278a..0000000000
--- a/src/main/java/org/ohdsi/webapi/shiro/annotations/CcGenerationId.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.ohdsi.webapi.shiro.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface CcGenerationId {
-}
diff --git a/src/main/java/org/ohdsi/webapi/shiro/annotations/DataSourceAccess.java b/src/main/java/org/ohdsi/webapi/shiro/annotations/DataSourceAccess.java
deleted file mode 100644
index 4e7dc6d30b..0000000000
--- a/src/main/java/org/ohdsi/webapi/shiro/annotations/DataSourceAccess.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.ohdsi.webapi.shiro.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
-public @interface DataSourceAccess {
-}
diff --git a/src/main/java/org/ohdsi/webapi/shiro/annotations/SourceId.java b/src/main/java/org/ohdsi/webapi/shiro/annotations/SourceId.java
deleted file mode 100644
index 373e7cae7f..0000000000
--- a/src/main/java/org/ohdsi/webapi/shiro/annotations/SourceId.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.ohdsi.webapi.shiro.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface SourceId {
-}
diff --git a/src/main/java/org/ohdsi/webapi/shiro/annotations/SourceKey.java b/src/main/java/org/ohdsi/webapi/shiro/annotations/SourceKey.java
deleted file mode 100644
index 1ca842b5c2..0000000000
--- a/src/main/java/org/ohdsi/webapi/shiro/annotations/SourceKey.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.ohdsi.webapi.shiro.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface SourceKey {
-}
diff --git a/src/main/java/org/ohdsi/webapi/shiro/management/DataSourceAccessBeanPostProcessor.java b/src/main/java/org/ohdsi/webapi/shiro/management/DataSourceAccessBeanPostProcessor.java
deleted file mode 100644
index f72e07e937..0000000000
--- a/src/main/java/org/ohdsi/webapi/shiro/management/DataSourceAccessBeanPostProcessor.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.ohdsi.webapi.shiro.management;
-
-import org.aopalliance.intercept.MethodInterceptor;
-import org.ohdsi.webapi.shiro.annotations.DataSourceAccess;
-import org.ohdsi.webapi.shiro.management.datasource.AccessorParameterBinding;
-import org.ohdsi.webapi.shiro.management.datasource.DataSourceAccessParameterResolver;
-import org.ohdsi.webapi.util.AnnotationReflectionUtils;
-import org.springframework.aop.framework.ProxyFactory;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.BeanInitializationException;
-import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.util.ReflectionUtils;
-
-import java.lang.reflect.Method;
-import java.util.*;
-
-public class DataSourceAccessBeanPostProcessor implements BeanPostProcessor {
-
- private Boolean proxyTargetClass;
-
- private DataSourceAccessParameterResolver accessParameterResolver;
-
- public DataSourceAccessBeanPostProcessor(DataSourceAccessParameterResolver accessParameterResolver, Boolean proxyTargetClass) {
-
- this.accessParameterResolver = accessParameterResolver;
- this.proxyTargetClass = proxyTargetClass;
- }
-
- @Override
- public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
-
- return bean;
- }
-
- @Override
- public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
-
- Class type = bean.getClass();
- final List annotatedMethods = getMethodsAnnotatedWith(type);
- Object result = bean;
- if (!annotatedMethods.isEmpty()) {
- ProxyFactory factory = new ProxyFactory(bean);
- factory.setProxyTargetClass(proxyTargetClass);
- factory.addAdvice((MethodInterceptor) invocation -> {
- Method method = invocation.getMethod();
- Object[] args = invocation.getArguments();
- Optional originalAnnotatedMethod = annotatedMethods.stream().filter(m ->
- Objects.equals(m.getName(), method.getName())
- && Objects.equals(m.getReturnType(), method.getReturnType())
- && Arrays.equals(m.getParameterTypes(), method.getParameterTypes())).findFirst();
- if (originalAnnotatedMethod.isPresent()) {
- AccessorParameterBinding