From 1c1297a3cbe3486f27c561fa04101455e2ff1378 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Thu, 18 Jul 2019 11:10:52 -0400 Subject: [PATCH 1/2] GH-2988: Use `@Config(proxyBeanMethods=false)` Fixes https://github.com/spring-projects/spring-integration/issues/2988 For faster startup (and possibility to compile to native code with GraalVM) use a `proxyBeanMethods = false` on all the `@Configuration` classes in the Framework * Provide some other code style polishing --- .../IntegrationManagementConfiguration.java | 6 +++--- .../IntegrationMBeanExportConfiguration.java | 17 ++++++++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java b/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java index 4d22082d71f..2aef1484eca 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java @@ -44,7 +44,7 @@ * * @since 4.2 */ -@Configuration +@Configuration(proxyBeanMethods = false) public class IntegrationManagementConfiguration implements ImportAware, EnvironmentAware { private AnnotationAttributes attributes; @@ -60,7 +60,7 @@ public void setEnvironment(Environment environment) { public void setImportMetadata(AnnotationMetadata importMetadata) { Map map = importMetadata.getAnnotationAttributes(EnableIntegrationManagement.class.getName()); this.attributes = AnnotationAttributes.fromMap(map); - Assert.notNull(this.attributes, + Assert.notNull(this.attributes, ()-> "@EnableIntegrationManagement is not present on importing class " + importMetadata.getClassName()); } @@ -85,7 +85,7 @@ public IntegrationManagementConfigurer managementConfigurer() { } private void setupCountsEnabledNamePatterns(IntegrationManagementConfigurer configurer) { - List patterns = new ArrayList(); + List patterns = new ArrayList<>(); String[] countsEnabled = this.attributes.getStringArray("countsEnabled"); for (String managedComponent : countsEnabled) { String pattern = this.environment.resolvePlaceholders(managedComponent); diff --git a/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/config/IntegrationMBeanExportConfiguration.java b/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/config/IntegrationMBeanExportConfiguration.java index 0261247a20d..53bbb8d4cda 100644 --- a/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/config/IntegrationMBeanExportConfiguration.java +++ b/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/config/IntegrationMBeanExportConfiguration.java @@ -58,10 +58,13 @@ * * @since 4.0 */ -@Configuration +@Configuration(proxyBeanMethods = false) public class IntegrationMBeanExportConfiguration implements ImportAware, EnvironmentAware, BeanFactoryAware { - private static final String MBEAN_EXPORTER_NAME = "integrationMbeanExporter"; + /** + * A name for default {@link IntegrationMBeanExporter} bean. + */ + public static final String MBEAN_EXPORTER_NAME = "integrationMbeanExporter"; private AnnotationAttributes attributes; @@ -95,7 +98,7 @@ public void setEnvironment(Environment environment) { public void setImportMetadata(AnnotationMetadata importMetadata) { Map map = importMetadata.getAnnotationAttributes(EnableIntegrationMBeanExport.class.getName()); this.attributes = AnnotationAttributes.fromMap(map); - Assert.notNull(this.attributes, + Assert.notNull(this.attributes, () -> "@EnableIntegrationMBeanExport is not present on importing class " + importMetadata.getClassName()); } @@ -121,7 +124,7 @@ public IntegrationMBeanExporter mbeanExporter() { private void setupDomain(IntegrationMBeanExporter exporter) { String defaultDomain = this.attributes.getString("defaultDomain"); - if (defaultDomain != null && this.environment != null) { + if (this.environment != null) { defaultDomain = this.environment.resolvePlaceholders(defaultDomain); } if (StringUtils.hasText(defaultDomain)) { @@ -131,11 +134,11 @@ private void setupDomain(IntegrationMBeanExporter exporter) { private void setupServer(IntegrationMBeanExporter exporter) { String server = this.attributes.getString("server"); - if (server != null && this.environment != null) { + if (this.environment != null) { server = this.environment.resolvePlaceholders(server); } if (StringUtils.hasText(server)) { - MBeanServer bean = null; + MBeanServer bean; if (server.startsWith("#{") && server.endsWith("}")) { bean = (MBeanServer) this.resolver.evaluate(server, this.expressionContext); } @@ -159,7 +162,7 @@ private void setupComponentNamePatterns(IntegrationMBeanExporter exporter) { String pattern = this.environment.resolvePlaceholders(managedComponent); patterns.addAll(Arrays.asList(StringUtils.commaDelimitedListToStringArray(pattern))); } - exporter.setComponentNamePatterns(patterns.toArray(new String[patterns.size()])); + exporter.setComponentNamePatterns(patterns.toArray(new String[0])); } } From 88960af7cd10e8ae969cf7f9d8739d7a9a5e0b54 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Thu, 18 Jul 2019 13:00:46 -0400 Subject: [PATCH 2/2] * Fix Checkstyle violation --- .../integration/config/IntegrationManagementConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java b/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java index 2aef1484eca..ef790cee7ab 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java @@ -60,7 +60,7 @@ public void setEnvironment(Environment environment) { public void setImportMetadata(AnnotationMetadata importMetadata) { Map map = importMetadata.getAnnotationAttributes(EnableIntegrationManagement.class.getName()); this.attributes = AnnotationAttributes.fromMap(map); - Assert.notNull(this.attributes, ()-> + Assert.notNull(this.attributes, () -> "@EnableIntegrationManagement is not present on importing class " + importMetadata.getClassName()); }