camel-spring-boot: improve customizer configuration

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1ca7a426
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1ca7a426
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1ca7a426

Branch: refs/heads/master
Commit: 1ca7a4260392663f198c424353522129781dab0a
Parents: ed85770
Author: lburgazzoli <[email protected]>
Authored: Sun May 21 12:21:59 2017 +0200
Committer: lburgazzoli <[email protected]>
Committed: Mon May 22 14:02:22 2017 +0200

----------------------------------------------------------------------
 .../camel/spring/boot/util/GroupCondition.java  |  32 +--
 .../util/HierarchicalPropertiesEvaluator.java   |  44 ++++
 .../spring/boot/util/GroupConditionTest1.java   |  49 ++++
 .../spring/boot/util/GroupConditionTest2.java   |  49 ++++
 .../spring/boot/util/GroupConditionTest3.java   |  49 ++++
 .../spring/boot/util/GroupConditionTest4.java   |  49 ++++
 .../boot/util/GroupConditionTestBase.java       |  41 ++++
 .../HierarchicalPropertiesEvaluatorTest.java    |  63 +++++
 .../src/test/resources/application.properties   |   2 +-
 .../AhcComponentAutoConfiguration.java          |  38 ++-
 .../WsComponentAutoConfiguration.java           |  38 ++-
 .../AMQPComponentAutoConfiguration.java         |  38 ++-
 .../ApnsComponentAutoConfiguration.java         |  38 ++-
 .../AsteriskComponentAutoConfiguration.java     |  38 ++-
 .../AtmosComponentAutoConfiguration.java        |  38 ++-
 .../WebsocketComponentAutoConfiguration.java    |  39 ++-
 .../AtomComponentAutoConfiguration.java         |  38 ++-
 .../AvroComponentAutoConfiguration.java         |  38 ++-
 .../AvroDataFormatAutoConfiguration.java        |  38 ++-
 .../CwComponentAutoConfiguration.java           |  38 ++-
 .../DdbComponentAutoConfiguration.java          |  38 ++-
 .../DdbStreamComponentAutoConfiguration.java    |  38 ++-
 .../EC2ComponentAutoConfiguration.java          |  38 ++-
 ...nesisFirehoseComponentAutoConfiguration.java |  39 ++-
 .../KinesisComponentAutoConfiguration.java      |  38 ++-
 .../S3ComponentAutoConfiguration.java           |  38 ++-
 .../SdbComponentAutoConfiguration.java          |  38 ++-
 .../SesComponentAutoConfiguration.java          |  38 ++-
 .../SnsComponentAutoConfiguration.java          |  38 ++-
 .../SqsComponentAutoConfiguration.java          |  38 ++-
 .../SWFComponentAutoConfiguration.java          |  38 ++-
 .../BlobServiceComponentAutoConfiguration.java  |  38 ++-
 .../QueueServiceComponentAutoConfiguration.java |  38 ++-
 .../BarcodeDataFormatAutoConfiguration.java     |  38 ++-
 .../Base64DataFormatAutoConfiguration.java      |  38 ++-
 ...BeanValidatorComponentAutoConfiguration.java |  38 ++-
 .../BeanIODataFormatAutoConfiguration.java      |  38 ++-
 .../BeanstalkComponentAutoConfiguration.java    |  38 ++-
 .../BindyCsvDataFormatAutoConfiguration.java    |  41 +++-
 ...yFixedLengthDataFormatAutoConfiguration.java |  41 +++-
 ...KeyValuePairDataFormatAutoConfiguration.java |  41 +++-
 .../BonitaComponentAutoConfiguration.java       |  38 ++-
 .../BoonDataFormatAutoConfiguration.java        |  38 ++-
 .../BoxComponentAutoConfiguration.java          |  38 ++-
 .../BraintreeComponentAutoConfiguration.java    |  38 ++-
 .../CacheComponentAutoConfiguration.java        |  38 ++-
 .../CassandraComponentAutoConfiguration.java    |  38 ++-
 .../CastorDataFormatAutoConfiguration.java      |  38 ++-
 ...ronicleEngineComponentAutoConfiguration.java |  38 ++-
 .../ChunkComponentAutoConfiguration.java        |  38 ++-
 .../CMComponentAutoConfiguration.java           |  38 ++-
 .../CMISComponentAutoConfiguration.java         |  38 ++-
 .../CoAPComponentAutoConfiguration.java         |  38 ++-
 .../CometdComponentAutoConfiguration.java       |  38 ++-
 .../ConsulComponentAutoConfiguration.java       |  38 ++-
 ...lifiedContextComponentAutoConfiguration.java |  38 ++-
 .../BeanComponentAutoConfiguration.java         |  38 ++-
 .../ClassComponentAutoConfiguration.java        |  38 ++-
 .../BindingNameComponentAutoConfiguration.java  |  38 ++-
 .../BrowseComponentAutoConfiguration.java       |  38 ++-
 .../ControlBusComponentAutoConfiguration.java   |  38 ++-
 .../DataFormatComponentAutoConfiguration.java   |  38 ++-
 .../DataSetComponentAutoConfiguration.java      |  38 ++-
 .../DirectComponentAutoConfiguration.java       |  38 ++-
 .../DirectVmComponentAutoConfiguration.java     |  38 ++-
 .../FileComponentAutoConfiguration.java         |  38 ++-
 .../LanguageComponentAutoConfiguration.java     |  38 ++-
 .../LogComponentAutoConfiguration.java          |  38 ++-
 .../MockComponentAutoConfiguration.java         |  38 ++-
 .../PropertiesComponentAutoConfiguration.java   |  38 ++-
 .../RefComponentAutoConfiguration.java          |  38 ++-
 .../RestApiComponentAutoConfiguration.java      |  38 ++-
 .../RestComponentAutoConfiguration.java         |  38 ++-
 .../SchedulerComponentAutoConfiguration.java    |  38 ++-
 .../SedaComponentAutoConfiguration.java         |  38 ++-
 .../StubComponentAutoConfiguration.java         |  38 ++-
 .../TestComponentAutoConfiguration.java         |  38 ++-
 .../TimerComponentAutoConfiguration.java        |  38 ++-
 .../ValidatorComponentAutoConfiguration.java    |  38 ++-
 .../VmComponentAutoConfiguration.java           |  38 ++-
 .../XsltComponentAutoConfiguration.java         |  38 ++-
 .../GzipDataFormatAutoConfiguration.java        |  38 ++-
 ...erializationDataFormatAutoConfiguration.java |  41 +++-
 .../StringDataFormatAutoConfiguration.java      |  38 ++-
 .../ZipDataFormatAutoConfiguration.java         |  38 ++-
 .../BeanLanguageAutoConfiguration.java          |  38 ++-
 .../ConstantLanguageAutoConfiguration.java      |  38 ++-
 .../HeaderLanguageAutoConfiguration.java        |  38 ++-
 ...changePropertyLanguageAutoConfiguration.java |  38 ++-
 .../RefLanguageAutoConfiguration.java           |  38 ++-
 .../FileLanguageAutoConfiguration.java          |  38 ++-
 .../SimpleLanguageAutoConfiguration.java        |  38 ++-
 .../TokenizeLanguageAutoConfiguration.java      |  38 ++-
 .../XMLTokenizeLanguageAutoConfiguration.java   |  38 ++-
 .../XPathLanguageAutoConfiguration.java         |  38 ++-
 .../CouchbaseComponentAutoConfiguration.java    |  38 ++-
 .../CouchDbComponentAutoConfiguration.java      |  38 ++-
 ...italSignatureComponentAutoConfiguration.java |  38 ++-
 .../CryptoDataFormatAutoConfiguration.java      |  38 ++-
 .../PGPDataFormatAutoConfiguration.java         |  38 ++-
 .../CsvDataFormatAutoConfiguration.java         |  38 ++-
 .../CxfRsComponentAutoConfiguration.java        |  38 ++-
 .../CxfComponentAutoConfiguration.java          |  38 ++-
 .../DigitalOceanComponentAutoConfiguration.java |  38 ++-
 .../DisruptorComponentAutoConfiguration.java    |  38 ++-
 .../DisruptorVmComponentAutoConfiguration.java  |  38 ++-
 .../DnsComponentAutoConfiguration.java          |  38 ++-
 .../DockerComponentAutoConfiguration.java       |  38 ++-
 .../DozerComponentAutoConfiguration.java        |  38 ++-
 .../DrillComponentAutoConfiguration.java        |  38 ++-
 .../DropboxComponentAutoConfiguration.java      |  38 ++-
 .../EhcacheComponentAutoConfiguration.java      |  38 ++-
 .../customizer/CacheManagerCustomizer.java      |  10 +-
 ...ManagerCustomizerEnabledOnComponentTest.java |  38 +++
 .../CacheManagerCustomizerEnabledTest.java      |  39 +++
 .../CacheManagerCustomizerEnabledTestBase.java  |  48 ++++
 ...agerCustomizerNotEnabledOnComponentTest.java |   1 +
 ...ElasticsearchComponentAutoConfiguration.java |  38 ++-
 ...ElasticsearchComponentAutoConfiguration.java |  38 ++-
 .../ElsqlComponentAutoConfiguration.java        |  38 ++-
 .../EtcdComponentAutoConfiguration.java         |  38 ++-
 .../ExecComponentAutoConfiguration.java         |  38 ++-
 .../FacebookComponentAutoConfiguration.java     |  38 ++-
 .../FlatpackComponentAutoConfiguration.java     |  38 ++-
 .../FlatpackDataFormatAutoConfiguration.java    |  38 ++-
 .../FlinkComponentAutoConfiguration.java        |  38 ++-
 .../FopComponentAutoConfiguration.java          |  38 ++-
 .../FreemarkerComponentAutoConfiguration.java   |  38 ++-
 .../FtpComponentAutoConfiguration.java          |  38 ++-
 .../FtpsComponentAutoConfiguration.java         |  38 ++-
 .../SftpComponentAutoConfiguration.java         |  38 ++-
 .../GangliaComponentAutoConfiguration.java      |  38 ++-
 .../GeoCoderComponentAutoConfiguration.java     |  38 ++-
 .../GitComponentAutoConfiguration.java          |  38 ++-
 .../GitHubComponentAutoConfiguration.java       |  38 ++-
 ...oogleCalendarComponentAutoConfiguration.java |  38 ++-
 .../GoogleDriveComponentAutoConfiguration.java  |  38 ++-
 .../GoogleMailComponentAutoConfiguration.java   |  38 ++-
 .../GooglePubsubComponentAutoConfiguration.java |  38 ++-
 .../GoraComponentAutoConfiguration.java         |  38 ++-
 .../GroovyLanguageAutoConfiguration.java        |  38 ++-
 .../GrpcComponentAutoConfiguration.java         |  38 ++-
 .../GsonDataFormatAutoConfiguration.java        |  41 +++-
 ...GuavaEventBusComponentAutoConfiguration.java |  38 ++-
 ...tAtomicnumberComponentAutoConfiguration.java |  39 ++-
 ...lcastInstanceComponentAutoConfiguration.java |  39 ++-
 ...HazelcastListComponentAutoConfiguration.java |  38 ++-
 .../HazelcastMapComponentAutoConfiguration.java |  38 ++-
 ...lcastMultimapComponentAutoConfiguration.java |  39 ++-
 ...azelcastQueueComponentAutoConfiguration.java |  38 ++-
 ...ReplicatedmapComponentAutoConfiguration.java |  39 ++-
 ...astRingbufferComponentAutoConfiguration.java |  39 ++-
 ...HazelcastSedaComponentAutoConfiguration.java |  38 ++-
 .../HazelcastSetComponentAutoConfiguration.java |  38 ++-
 ...azelcastTopicComponentAutoConfiguration.java |  38 ++-
 .../HBaseComponentAutoConfiguration.java        |  38 ++-
 .../HdfsComponentAutoConfiguration.java         |  38 ++-
 .../HdfsComponentAutoConfiguration.java         |  38 ++-
 .../HessianDataFormatAutoConfiguration.java     |  38 ++-
 .../HipchatComponentAutoConfiguration.java      |  38 ++-
 .../HL7DataFormatAutoConfiguration.java         |  38 ++-
 .../TerserLanguageAutoConfiguration.java        |  38 ++-
 .../HttpComponentAutoConfiguration.java         |  38 ++-
 .../HttpComponentAutoConfiguration.java         |  38 ++-
 .../ICalDataFormatAutoConfiguration.java        |  38 ++-
 .../IgniteCacheComponentAutoConfiguration.java  |  38 ++-
 ...IgniteComputeComponentAutoConfiguration.java |  38 ++-
 .../IgniteEventsComponentAutoConfiguration.java |  38 ++-
 .../IgniteIdGenComponentAutoConfiguration.java  |  38 ++-
 ...niteMessagingComponentAutoConfiguration.java |  38 ++-
 .../IgniteQueueComponentAutoConfiguration.java  |  38 ++-
 .../IgniteSetComponentAutoConfiguration.java    |  38 ++-
 .../InfinispanComponentAutoConfiguration.java   |  38 ++-
 .../InfluxDbComponentAutoConfiguration.java     |  38 ++-
 .../IrcComponentAutoConfiguration.java          |  38 ++-
 .../IronMQComponentAutoConfiguration.java       |  38 ++-
 .../JacksonDataFormatAutoConfiguration.java     |  41 +++-
 .../JacksonXMLDataFormatAutoConfiguration.java  |  41 +++-
 .../JavaSpaceComponentAutoConfiguration.java    |  38 ++-
 .../JaxbDataFormatAutoConfiguration.java        |  38 ++-
 .../JBPMComponentAutoConfiguration.java         |  38 ++-
 .../JCacheComponentAutoConfiguration.java       |  38 ++-
 .../JcrComponentAutoConfiguration.java          |  38 ++-
 .../JdbcComponentAutoConfiguration.java         |  38 ++-
 .../JettyHttpComponentAutoConfiguration9.java   |  38 ++-
 .../JGroupsComponentAutoConfiguration.java      |  38 ++-
 .../JibxDataFormatAutoConfiguration.java        |  38 ++-
 .../JingComponentAutoConfiguration.java         |  38 ++-
 .../JIRAComponentAutoConfiguration.java         |  38 ++-
 .../JmsComponentAutoConfiguration.java          |  38 ++-
 .../JMXComponentAutoConfiguration.java          |  38 ++-
 .../JohnzonDataFormatAutoConfiguration.java     |  41 +++-
 .../JoltComponentAutoConfiguration.java         |  38 ++-
 .../SqlLanguageAutoConfiguration.java           |  38 ++-
 .../JpaComponentAutoConfiguration.java          |  38 ++-
 .../ScpComponentAutoConfiguration.java          |  38 ++-
 .../JsonPathLanguageAutoConfiguration.java      |  38 ++-
 .../Jt400ComponentAutoConfiguration.java        |  38 ++-
 .../JuelLanguageAutoConfiguration.java          |  38 ++-
 .../JXPathLanguageAutoConfiguration.java        |  38 ++-
 .../KafkaComponentAutoConfiguration.java        |  38 ++-
 .../KestrelComponentAutoConfiguration.java      |  38 ++-
 .../KratiComponentAutoConfiguration.java        |  38 ++-
 .../KubernetesComponentAutoConfiguration.java   |  38 ++-
 .../LdapComponentAutoConfiguration.java         |  38 ++-
 .../LinkedInComponentAutoConfiguration.java     |  38 ++-
 .../LuceneComponentAutoConfiguration.java       |  38 ++-
 .../LumberjackComponentAutoConfiguration.java   |  38 ++-
 .../LZFDataFormatAutoConfiguration.java         |  38 ++-
 .../MailComponentAutoConfiguration.java         |  38 ++-
 ...imeMultipartDataFormatAutoConfiguration.java |  41 +++-
 .../MetricsComponentAutoConfiguration.java      |  38 ++-
 .../MiloClientComponentAutoConfiguration.java   |  38 ++-
 .../MiloServerComponentAutoConfiguration.java   |  38 ++-
 .../Mina2ComponentAutoConfiguration.java        |  38 ++-
 .../MllpComponentAutoConfiguration.java         |  38 ++-
 .../GridFsComponentAutoConfiguration.java       |  38 ++-
 .../MongoDbComponentAutoConfiguration.java      |  38 ++-
 .../MongoDbComponentAutoConfiguration.java      |  38 ++-
 .../MQTTComponentAutoConfiguration.java         |  38 ++-
 .../MsvComponentAutoConfiguration.java          |  38 ++-
 .../MustacheComponentAutoConfiguration.java     |  38 ++-
 .../MvelComponentAutoConfiguration.java         |  38 ++-
 .../MvelLanguageAutoConfiguration.java          |  38 ++-
 .../MyBatisComponentAutoConfiguration.java      |  38 ++-
 .../NagiosComponentAutoConfiguration.java       |  38 ++-
 .../NatsComponentAutoConfiguration.java         |  38 ++-
 .../NettyHttpComponentAutoConfiguration.java    |  38 ++-
 .../NettyComponentAutoConfiguration.java        |  38 ++-
 .../NettyHttpComponentAutoConfiguration.java    |  38 ++-
 .../NettyComponentAutoConfiguration.java        |  38 ++-
 .../OgnlLanguageAutoConfiguration.java          |  38 ++-
 .../Olingo2ComponentAutoConfiguration.java      |  38 ++-
 .../Olingo4ComponentAutoConfiguration.java      |  38 ++-
 .../OpenShiftComponentAutoConfiguration.java    |  38 ++-
 .../CinderComponentAutoConfiguration.java       |  38 ++-
 .../GlanceComponentAutoConfiguration.java       |  38 ++-
 .../KeystoneComponentAutoConfiguration.java     |  39 ++-
 .../NeutronComponentAutoConfiguration.java      |  38 ++-
 .../NovaComponentAutoConfiguration.java         |  38 ++-
 .../SwiftComponentAutoConfiguration.java        |  38 ++-
 .../OptaPlannerComponentAutoConfiguration.java  |  38 ++-
 .../PahoComponentAutoConfiguration.java         |  38 ++-
 .../PdfComponentAutoConfiguration.java          |  38 ++-
 .../PgEventComponentAutoConfiguration.java      |  38 ++-
 .../PrinterComponentAutoConfiguration.java      |  38 ++-
 .../ProtobufDataFormatAutoConfiguration.java    |  38 ++-
 .../PubNubComponentAutoConfiguration.java       |  38 ++-
 .../QuartzComponentAutoConfiguration.java       |  38 ++-
 .../QuickfixjComponentAutoConfiguration.java    |  38 ++-
 .../RabbitMQComponentAutoConfiguration.java     |  38 ++-
 ...activeStreamsComponentAutoConfiguration.java |  38 ++-
 .../RestSwaggerComponentAutoConfiguration.java  |  38 ++-
 .../RestletComponentAutoConfiguration.java      |  38 ++-
 .../RmiComponentAutoConfiguration.java          |  38 ++-
 .../RouteboxComponentAutoConfiguration.java     |  38 ++-
 .../RssComponentAutoConfiguration.java          |  38 ++-
 .../RssDataFormatAutoConfiguration.java         |  38 ++-
 .../SalesforceComponentAutoConfiguration.java   |  38 ++-
 .../NetWeaverComponentAutoConfiguration.java    |  38 ++-
 .../XQueryComponentAutoConfiguration.java       |  38 ++-
 .../XQueryLanguageAutoConfiguration.java        |  38 ++-
 .../SchematronComponentAutoConfiguration.java   |  38 ++-
 .../JavaScriptLanguageAutoConfiguration.java    |  38 ++-
 .../PhpLanguageAutoConfiguration.java           |  38 ++-
 .../PythonLanguageAutoConfiguration.java        |  38 ++-
 .../RubyLanguageAutoConfiguration.java          |  38 ++-
 .../ServiceNowComponentAutoConfiguration.java   |  38 ++-
 .../ServletComponentAutoConfiguration.java      |  38 ++-
 .../SipComponentAutoConfiguration.java          |  38 ++-
 .../SjmsBatchComponentAutoConfiguration.java    |  38 ++-
 .../SjmsComponentAutoConfiguration.java         |  38 ++-
 .../Sjms2ComponentAutoConfiguration.java        |  38 ++-
 .../SlackComponentAutoConfiguration.java        |  38 ++-
 .../SmppComponentAutoConfiguration.java         |  38 ++-
 .../SnakeYAMLDataFormatAutoConfiguration.java   |  43 ++--
 .../SnmpComponentAutoConfiguration.java         |  38 ++-
 .../SoapJaxbDataFormatAutoConfiguration.java    |  38 ++-
 .../SolrComponentAutoConfiguration.java         |  38 ++-
 .../SparkComponentAutoConfiguration.java        |  38 ++-
 .../SplunkComponentAutoConfiguration.java       |  38 ++-
 .../SpringBatchComponentAutoConfiguration.java  |  38 ++-
 ...ngIntegrationComponentAutoConfiguration.java |  39 ++-
 .../SpringLdapComponentAutoConfiguration.java   |  38 ++-
 .../RedisComponentAutoConfiguration.java        |  38 ++-
 .../EventComponentAutoConfiguration.java        |  38 ++-
 .../SpelLanguageAutoConfiguration.java          |  38 ++-
 ...ingWebserviceComponentAutoConfiguration.java |  38 ++-
 .../SqlComponentAutoConfiguration.java          |  38 ++-
 .../SqlStoredComponentAutoConfiguration.java    |  38 ++-
 .../SshComponentAutoConfiguration.java          |  38 ++-
 .../StAXComponentAutoConfiguration.java         |  38 ++-
 .../StompComponentAutoConfiguration.java        |  38 ++-
 .../StreamComponentAutoConfiguration.java       |  38 ++-
 ...tringTemplateComponentAutoConfiguration.java |  38 ++-
 .../SyslogDataFormatAutoConfiguration.java      |  38 ++-
 .../TidyMarkupDataFormatAutoConfiguration.java  |  41 +++-
 .../TarFileDataFormatAutoConfiguration.java     |  38 ++-
 .../TelegramComponentAutoConfiguration.java     |  38 ++-
 .../TikaComponentAutoConfiguration.java         |  38 ++-
 .../TwitterComponentAutoConfiguration.java      |  38 ++-
 .../UndertowComponentAutoConfiguration.java     |  38 ++-
 ...UniVocityCsvDataFormatAutoConfiguration.java |  41 +++-
 ...tyFixedWidthDataFormatAutoConfiguration.java |  41 +++-
 ...UniVocityTsvDataFormatAutoConfiguration.java |  41 +++-
 .../VelocityComponentAutoConfiguration.java     |  38 ++-
 .../VertxComponentAutoConfiguration.java        |  38 ++-
 .../WeatherComponentAutoConfiguration.java      |  38 ++-
 .../WebsocketComponentAutoConfiguration.java    |  38 ++-
 .../XmlBeansDataFormatAutoConfiguration.java    |  38 ++-
 .../XmlJsonDataFormatAutoConfiguration.java     |  38 ++-
 .../XmlRpcComponentAutoConfiguration.java       |  38 ++-
 .../XmlRpcDataFormatAutoConfiguration.java      |  38 ++-
 .../XmlSignatureComponentAutoConfiguration.java |  38 ++-
 .../XMLSecurityDataFormatAutoConfiguration.java |  41 +++-
 .../XmppComponentAutoConfiguration.java         |  38 ++-
 .../JsonDataFormatAutoConfiguration.java        |  41 +++-
 .../XStreamDataFormatAutoConfiguration.java     |  38 ++-
 .../YammerComponentAutoConfiguration.java       |  38 ++-
 .../ZendeskComponentAutoConfiguration.java      |  38 ++-
 .../ZipFileDataFormatAutoConfiguration.java     |  38 ++-
 .../MasterComponentAutoConfiguration.java       |  38 ++-
 .../ZooKeeperComponentAutoConfiguration.java    |  38 ++-
 .../SpringBootAutoConfigurationMojo.java        | 245 +++++++++++--------
 324 files changed, 8407 insertions(+), 4153 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/GroupCondition.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/GroupCondition.java
 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/GroupCondition.java
index acfd832..fe18518 100644
--- 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/GroupCondition.java
+++ 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/GroupCondition.java
@@ -19,42 +19,26 @@ package org.apache.camel.spring.boot.util;
 import org.springframework.boot.autoconfigure.condition.ConditionMessage;
 import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
 import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
 import org.springframework.context.annotation.ConditionContext;
+import org.springframework.core.env.Environment;
 import org.springframework.core.type.AnnotatedTypeMetadata;
 
 public class GroupCondition extends SpringBootCondition {
     private final String group;
     private final String single;
-    private final boolean groupDefault;
-    private final boolean singleDefault;
 
     public GroupCondition(String group, String single) {
-        this(group, true, single, true);
-    }
-
-    public GroupCondition(String group, boolean groupDefault, String single, 
boolean singleDefault) {
-        this.group = group.endsWith(".") ? group : group + ".";
-        this.groupDefault = groupDefault;
-
-        this.single = group.endsWith(".") ? single : single + ".";
-        this.singleDefault = singleDefault;
+        this.group = group;
+        this.single = single;
     }
 
     @Override
     public ConditionOutcome getMatchOutcome(ConditionContext conditionContext, 
AnnotatedTypeMetadata annotatedTypeMetadata) {
-        boolean groupEnabled = isEnabled(conditionContext, this.group, true);
-        ConditionMessage.Builder message = 
ConditionMessage.forCondition(this.single);
-
-        if (isEnabled(conditionContext, this.single, groupEnabled)) {
-            return ConditionOutcome.match(message.because("enabled"));
-        }
-
-        return ConditionOutcome.noMatch(message.because("not enabled"));
-    }
+        final ConditionMessage.Builder message = 
ConditionMessage.forCondition(this.single);
+        final Environment environment = conditionContext.getEnvironment();
 
-    public static boolean isEnabled(ConditionContext context, String prefix, 
boolean defaultValue) {
-        RelaxedPropertyResolver resolver = new 
RelaxedPropertyResolver(context.getEnvironment(), prefix);
-        return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        return HierarchicalPropertiesEvaluator.evaluate(environment, 
this.group, this.single)
+            ? ConditionOutcome.match(message.because("enabled"))
+            : ConditionOutcome.noMatch(message.because("not enabled"));
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java
 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java
new file mode 100644
index 0000000..a41effb
--- /dev/null
+++ 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ *      http://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.apache.camel.spring.boot.util;
+
+import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.core.env.Environment;
+
+public final class HierarchicalPropertiesEvaluator {
+    private HierarchicalPropertiesEvaluator() {
+    }
+
+    public static boolean evaluate(Environment environment, String... 
prefixes) {
+        boolean answer = true;
+
+        for (String prefix : prefixes) {
+            answer = isEnabled(environment, prefix, answer);
+        }
+
+        return answer;
+    }
+
+    private static boolean isEnabled(Environment environment, String prefix, 
boolean defaultValue) {
+        RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+            environment,
+            prefix.endsWith(".") ? prefix : prefix + "."
+        );
+
+        return resolver.getProperty("enabled", Boolean.class, defaultValue);
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest1.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest1.java
 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest1.java
new file mode 100644
index 0000000..b8155b7
--- /dev/null
+++ 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest1.java
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ *      http://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.apache.camel.spring.boot.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@DirtiesContext
+@SpringBootApplication
+@SpringBootTest(
+    classes = {
+        GroupConditionTestBase.TestConfiguration.class
+    },
+    properties = {
+        "test.group.enabled=false",
+        "test.group.my-class.enabled=true"
+    }
+)
+public class GroupConditionTest1 extends GroupConditionTestBase {
+    @Autowired
+    ApplicationContext context;
+
+    @Test
+    public void testCondition() {
+        Assert.assertEquals(1, context.getBeansOfType(MyClass.class).size());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest2.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest2.java
 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest2.java
new file mode 100644
index 0000000..f981acc
--- /dev/null
+++ 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest2.java
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ *      http://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.apache.camel.spring.boot.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@DirtiesContext
+@SpringBootApplication
+@SpringBootTest(
+    classes = {
+        GroupConditionTest2.TestConfiguration.class
+    },
+    properties = {
+        "test.group.enabled=false",
+        "test.group.my-class.enabled=false"
+    }
+)
+public class GroupConditionTest2 extends GroupConditionTestBase {
+    @Autowired
+    ApplicationContext context;
+
+    @Test
+    public void testCondition() {
+        Assert.assertEquals(0, context.getBeansOfType(MyClass.class).size());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest3.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest3.java
 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest3.java
new file mode 100644
index 0000000..f266d69
--- /dev/null
+++ 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest3.java
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ *      http://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.apache.camel.spring.boot.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@DirtiesContext
+@SpringBootApplication
+@SpringBootTest(
+    classes = {
+        GroupConditionTest3.TestConfiguration.class
+    },
+    properties = {
+        "test.group.enabled=true",
+        "test.group.my-class.enabled=false"
+    }
+)
+public class GroupConditionTest3 extends GroupConditionTestBase {
+    @Autowired
+    ApplicationContext context;
+
+    @Test
+    public void testCondition() {
+        Assert.assertEquals(0, context.getBeansOfType(MyClass.class).size());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest4.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest4.java
 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest4.java
new file mode 100644
index 0000000..4de3782
--- /dev/null
+++ 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest4.java
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ *      http://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.apache.camel.spring.boot.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@DirtiesContext
+@SpringBootApplication
+@SpringBootTest(
+    classes = {
+        GroupConditionTest4.TestConfiguration.class
+    },
+    properties = {
+        "test.group.enabled=true",
+        "test.group.my-class.enabled=true"
+    }
+)
+public class GroupConditionTest4 extends GroupConditionTestBase {
+    @Autowired
+    ApplicationContext context;
+
+    @Test
+    public void testCondition() {
+        Assert.assertEquals(1, context.getBeansOfType(MyClass.class).size());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTestBase.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTestBase.java
 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTestBase.java
new file mode 100644
index 0000000..39e8fdb
--- /dev/null
+++ 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTestBase.java
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ *      http://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.apache.camel.spring.boot.util;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+
+public class GroupConditionTestBase {
+    @Configuration
+    static class TestConfiguration {
+        @Bean
+        @Conditional(TestConfiguration.Conditions.class)
+        public MyClass stringComponent() {
+            return new MyClass();
+        }
+
+        static class Conditions extends GroupCondition {
+            public Conditions() {
+                super("test.group", "test.group.my-class");
+            }
+        }
+    }
+
+    static class MyClass {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluatorTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluatorTest.java
 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluatorTest.java
new file mode 100644
index 0000000..6ed08f4
--- /dev/null
+++ 
b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluatorTest.java
@@ -0,0 +1,63 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ *      http://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.apache.camel.spring.boot.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@DirtiesContext
+@SpringBootApplication
+@SpringBootTest(
+    classes = {
+        HierarchicalPropertiesEvaluatorTest.TestConfiguration.class
+    },
+    properties = {
+        "test.group1.enabled=true",
+        "test.group1.subgroup1.enabled=false",
+        "test.group1.subgroup2.enabled=true",
+        "test.group2.enabled=false",
+        "test.group2.subgroup1.enabled=false",
+        "test.group2.subgroup2.enabled=true",
+        "test.group2.subgroup3.enabled=false"
+    }
+)
+public class HierarchicalPropertiesEvaluatorTest {
+    @Autowired
+    Environment environment;
+
+    @Test
+    public void testEvaluator() {
+        
Assert.assertFalse(HierarchicalPropertiesEvaluator.evaluate(environment, 
"test.group1", "test.group1.subgroup1"));
+        
Assert.assertTrue(HierarchicalPropertiesEvaluator.evaluate(environment, 
"test.group1", "test.group1.subgroup2"));
+        
Assert.assertFalse(HierarchicalPropertiesEvaluator.evaluate(environment, 
"test.group2", "test.group2.subgroup1"));
+        
Assert.assertTrue(HierarchicalPropertiesEvaluator.evaluate(environment, 
"test.group2", "test.group2.subgroup2"));
+        
Assert.assertFalse(HierarchicalPropertiesEvaluator.evaluate(environment, 
"test.group2", "test.group2.subgroup3"));
+    }
+
+    @Configuration
+    static class TestConfiguration {
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/resources/application.properties
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/test/resources/application.properties 
b/components/camel-spring-boot/src/test/resources/application.properties
index 3056876..518bcd1 100644
--- a/components/camel-spring-boot/src/test/resources/application.properties
+++ b/components/camel-spring-boot/src/test/resources/application.properties
@@ -20,4 +20,4 @@ spring.main.banner_mode=off
 from=direct:test
 to=mock:test
 
-#logging.level.org.apache.camel=DEBUG
+#logging.level.org.apache.camel=DEBUG
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java
index 2c7a026..a403c94 100644
--- 
a/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java
@@ -23,10 +23,12 @@ import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.ahc.AhcComponent;
 import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spi.HasId;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
 import org.apache.camel.spring.boot.ComponentConfigurationProperties;
 import 
org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
 import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -36,6 +38,7 @@ import 
org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
@@ -56,13 +59,13 @@ public class AhcComponentAutoConfiguration {
     private static final Logger LOGGER = LoggerFactory
             .getLogger(AhcComponentAutoConfiguration.class);
     @Autowired
+    private ApplicationContext applicationContext;
+    @Autowired
     private CamelContext camelContext;
+    @Autowired
+    private AhcComponentConfiguration configuration;
     @Autowired(required = false)
     private List<ComponentCustomizer<AhcComponent>> customizers;
-    @Autowired
-    private ComponentConfigurationProperties globalConfiguration;
-    @Autowired
-    private AhcComponentConfiguration componentConfiguration;
 
     static class GroupConditions extends GroupCondition {
         public GroupConditions() {
@@ -77,8 +80,8 @@ public class AhcComponentAutoConfiguration {
         AhcComponent component = new AhcComponent();
         component.setCamelContext(camelContext);
         Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(componentConfiguration, parameters,
-                null, false);
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
         for (Map.Entry<String, Object> entry : parameters.entrySet()) {
             Object value = entry.getValue();
             Class<?> paramClass = value.getClass();
@@ -101,14 +104,23 @@ public class AhcComponentAutoConfiguration {
         }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
-        boolean useCustomizers = globalConfiguration.getCustomizer()
-                .isEnabled()
-                && componentConfiguration.getCustomizer().isEnabled();
-        if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) {
+        if (ObjectHelper.isNotEmpty(customizers)) {
             for (ComponentCustomizer<AhcComponent> customizer : customizers) {
-                LOGGER.debug("Configure component {}, with customizer {}",
-                        component, customizer);
-                customizer.customize(component);
+                boolean useCustomizer = (customizer instanceof HasId)
+                        ? HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.ahc.customizer",
+                                ((HasId) customizer).getId())
+                        : HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.ahc.customizer");
+                if (useCustomizer) {
+                    LOGGER.debug("Configure component {}, with customizer {}",
+                            component, customizer);
+                    customizer.customize(component);
+                }
             }
         }
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java
index 42f6a5b..4baf62d 100644
--- 
a/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java
@@ -23,10 +23,12 @@ import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.ahc.ws.WsComponent;
 import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spi.HasId;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
 import org.apache.camel.spring.boot.ComponentConfigurationProperties;
 import 
org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
 import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -36,6 +38,7 @@ import 
org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
@@ -56,13 +59,13 @@ public class WsComponentAutoConfiguration {
     private static final Logger LOGGER = LoggerFactory
             .getLogger(WsComponentAutoConfiguration.class);
     @Autowired
+    private ApplicationContext applicationContext;
+    @Autowired
     private CamelContext camelContext;
+    @Autowired
+    private WsComponentConfiguration configuration;
     @Autowired(required = false)
     private List<ComponentCustomizer<WsComponent>> customizers;
-    @Autowired
-    private ComponentConfigurationProperties globalConfiguration;
-    @Autowired
-    private WsComponentConfiguration componentConfiguration;
 
     static class GroupConditions extends GroupCondition {
         public GroupConditions() {
@@ -77,8 +80,8 @@ public class WsComponentAutoConfiguration {
         WsComponent component = new WsComponent();
         component.setCamelContext(camelContext);
         Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(componentConfiguration, parameters,
-                null, false);
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
         for (Map.Entry<String, Object> entry : parameters.entrySet()) {
             Object value = entry.getValue();
             Class<?> paramClass = value.getClass();
@@ -101,14 +104,23 @@ public class WsComponentAutoConfiguration {
         }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
-        boolean useCustomizers = globalConfiguration.getCustomizer()
-                .isEnabled()
-                && componentConfiguration.getCustomizer().isEnabled();
-        if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) {
+        if (ObjectHelper.isNotEmpty(customizers)) {
             for (ComponentCustomizer<WsComponent> customizer : customizers) {
-                LOGGER.debug("Configure component {}, with customizer {}",
-                        component, customizer);
-                customizer.customize(component);
+                boolean useCustomizer = (customizer instanceof HasId)
+                        ? HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.ahc-ws.customizer",
+                                ((HasId) customizer).getId())
+                        : HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.ahc-ws.customizer");
+                if (useCustomizer) {
+                    LOGGER.debug("Configure component {}, with customizer {}",
+                            component, customizer);
+                    customizer.customize(component);
+                }
             }
         }
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java
index 7ef0289..55c0304 100644
--- 
a/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java
@@ -23,10 +23,12 @@ import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.amqp.AMQPComponent;
 import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spi.HasId;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
 import org.apache.camel.spring.boot.ComponentConfigurationProperties;
 import 
org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
 import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -36,6 +38,7 @@ import 
org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
@@ -56,13 +59,13 @@ public class AMQPComponentAutoConfiguration {
     private static final Logger LOGGER = LoggerFactory
             .getLogger(AMQPComponentAutoConfiguration.class);
     @Autowired
+    private ApplicationContext applicationContext;
+    @Autowired
     private CamelContext camelContext;
+    @Autowired
+    private AMQPComponentConfiguration configuration;
     @Autowired(required = false)
     private List<ComponentCustomizer<AMQPComponent>> customizers;
-    @Autowired
-    private ComponentConfigurationProperties globalConfiguration;
-    @Autowired
-    private AMQPComponentConfiguration componentConfiguration;
 
     static class GroupConditions extends GroupCondition {
         public GroupConditions() {
@@ -77,8 +80,8 @@ public class AMQPComponentAutoConfiguration {
         AMQPComponent component = new AMQPComponent();
         component.setCamelContext(camelContext);
         Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(componentConfiguration, parameters,
-                null, false);
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
         for (Map.Entry<String, Object> entry : parameters.entrySet()) {
             Object value = entry.getValue();
             Class<?> paramClass = value.getClass();
@@ -101,14 +104,23 @@ public class AMQPComponentAutoConfiguration {
         }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
-        boolean useCustomizers = globalConfiguration.getCustomizer()
-                .isEnabled()
-                && componentConfiguration.getCustomizer().isEnabled();
-        if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) {
+        if (ObjectHelper.isNotEmpty(customizers)) {
             for (ComponentCustomizer<AMQPComponent> customizer : customizers) {
-                LOGGER.debug("Configure component {}, with customizer {}",
-                        component, customizer);
-                customizer.customize(component);
+                boolean useCustomizer = (customizer instanceof HasId)
+                        ? HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.amqp.customizer",
+                                ((HasId) customizer).getId())
+                        : HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.amqp.customizer");
+                if (useCustomizer) {
+                    LOGGER.debug("Configure component {}, with customizer {}",
+                            component, customizer);
+                    customizer.customize(component);
+                }
             }
         }
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-apns-starter/src/main/java/org/apache/camel/component/apns/springboot/ApnsComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-apns-starter/src/main/java/org/apache/camel/component/apns/springboot/ApnsComponentAutoConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-apns-starter/src/main/java/org/apache/camel/component/apns/springboot/ApnsComponentAutoConfiguration.java
index 68405cf..f54a5e6 100644
--- 
a/platforms/spring-boot/components-starter/camel-apns-starter/src/main/java/org/apache/camel/component/apns/springboot/ApnsComponentAutoConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-apns-starter/src/main/java/org/apache/camel/component/apns/springboot/ApnsComponentAutoConfiguration.java
@@ -23,10 +23,12 @@ import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.apns.ApnsComponent;
 import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spi.HasId;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
 import org.apache.camel.spring.boot.ComponentConfigurationProperties;
 import 
org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
 import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -36,6 +38,7 @@ import 
org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
@@ -56,13 +59,13 @@ public class ApnsComponentAutoConfiguration {
     private static final Logger LOGGER = LoggerFactory
             .getLogger(ApnsComponentAutoConfiguration.class);
     @Autowired
+    private ApplicationContext applicationContext;
+    @Autowired
     private CamelContext camelContext;
+    @Autowired
+    private ApnsComponentConfiguration configuration;
     @Autowired(required = false)
     private List<ComponentCustomizer<ApnsComponent>> customizers;
-    @Autowired
-    private ComponentConfigurationProperties globalConfiguration;
-    @Autowired
-    private ApnsComponentConfiguration componentConfiguration;
 
     static class GroupConditions extends GroupCondition {
         public GroupConditions() {
@@ -77,8 +80,8 @@ public class ApnsComponentAutoConfiguration {
         ApnsComponent component = new ApnsComponent();
         component.setCamelContext(camelContext);
         Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(componentConfiguration, parameters,
-                null, false);
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
         for (Map.Entry<String, Object> entry : parameters.entrySet()) {
             Object value = entry.getValue();
             Class<?> paramClass = value.getClass();
@@ -101,14 +104,23 @@ public class ApnsComponentAutoConfiguration {
         }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
-        boolean useCustomizers = globalConfiguration.getCustomizer()
-                .isEnabled()
-                && componentConfiguration.getCustomizer().isEnabled();
-        if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) {
+        if (ObjectHelper.isNotEmpty(customizers)) {
             for (ComponentCustomizer<ApnsComponent> customizer : customizers) {
-                LOGGER.debug("Configure component {}, with customizer {}",
-                        component, customizer);
-                customizer.customize(component);
+                boolean useCustomizer = (customizer instanceof HasId)
+                        ? HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.apns.customizer",
+                                ((HasId) customizer).getId())
+                        : HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.apns.customizer");
+                if (useCustomizer) {
+                    LOGGER.debug("Configure component {}, with customizer {}",
+                            component, customizer);
+                    customizer.customize(component);
+                }
             }
         }
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-asterisk-starter/src/main/java/org/apache/camel/component/asterisk/springboot/AsteriskComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-asterisk-starter/src/main/java/org/apache/camel/component/asterisk/springboot/AsteriskComponentAutoConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-asterisk-starter/src/main/java/org/apache/camel/component/asterisk/springboot/AsteriskComponentAutoConfiguration.java
index 66d591d..9574063 100644
--- 
a/platforms/spring-boot/components-starter/camel-asterisk-starter/src/main/java/org/apache/camel/component/asterisk/springboot/AsteriskComponentAutoConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-asterisk-starter/src/main/java/org/apache/camel/component/asterisk/springboot/AsteriskComponentAutoConfiguration.java
@@ -23,10 +23,12 @@ import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.asterisk.AsteriskComponent;
 import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spi.HasId;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
 import org.apache.camel.spring.boot.ComponentConfigurationProperties;
 import 
org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
 import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -36,6 +38,7 @@ import 
org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
@@ -56,13 +59,13 @@ public class AsteriskComponentAutoConfiguration {
     private static final Logger LOGGER = LoggerFactory
             .getLogger(AsteriskComponentAutoConfiguration.class);
     @Autowired
+    private ApplicationContext applicationContext;
+    @Autowired
     private CamelContext camelContext;
+    @Autowired
+    private AsteriskComponentConfiguration configuration;
     @Autowired(required = false)
     private List<ComponentCustomizer<AsteriskComponent>> customizers;
-    @Autowired
-    private ComponentConfigurationProperties globalConfiguration;
-    @Autowired
-    private AsteriskComponentConfiguration componentConfiguration;
 
     static class GroupConditions extends GroupCondition {
         public GroupConditions() {
@@ -77,8 +80,8 @@ public class AsteriskComponentAutoConfiguration {
         AsteriskComponent component = new AsteriskComponent();
         component.setCamelContext(camelContext);
         Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(componentConfiguration, parameters,
-                null, false);
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
         for (Map.Entry<String, Object> entry : parameters.entrySet()) {
             Object value = entry.getValue();
             Class<?> paramClass = value.getClass();
@@ -101,14 +104,23 @@ public class AsteriskComponentAutoConfiguration {
         }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
-        boolean useCustomizers = globalConfiguration.getCustomizer()
-                .isEnabled()
-                && componentConfiguration.getCustomizer().isEnabled();
-        if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) {
+        if (ObjectHelper.isNotEmpty(customizers)) {
             for (ComponentCustomizer<AsteriskComponent> customizer : 
customizers) {
-                LOGGER.debug("Configure component {}, with customizer {}",
-                        component, customizer);
-                customizer.customize(component);
+                boolean useCustomizer = (customizer instanceof HasId)
+                        ? HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.asterisk.customizer",
+                                ((HasId) customizer).getId())
+                        : HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.asterisk.customizer");
+                if (useCustomizer) {
+                    LOGGER.debug("Configure component {}, with customizer {}",
+                            component, customizer);
+                    customizer.customize(component);
+                }
             }
         }
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-atmos-starter/src/main/java/org/apache/camel/component/atmos/springboot/AtmosComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-atmos-starter/src/main/java/org/apache/camel/component/atmos/springboot/AtmosComponentAutoConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-atmos-starter/src/main/java/org/apache/camel/component/atmos/springboot/AtmosComponentAutoConfiguration.java
index a97ff18..ba46617 100644
--- 
a/platforms/spring-boot/components-starter/camel-atmos-starter/src/main/java/org/apache/camel/component/atmos/springboot/AtmosComponentAutoConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-atmos-starter/src/main/java/org/apache/camel/component/atmos/springboot/AtmosComponentAutoConfiguration.java
@@ -23,10 +23,12 @@ import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.atmos.AtmosComponent;
 import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spi.HasId;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
 import org.apache.camel.spring.boot.ComponentConfigurationProperties;
 import 
org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
 import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -36,6 +38,7 @@ import 
org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
@@ -56,13 +59,13 @@ public class AtmosComponentAutoConfiguration {
     private static final Logger LOGGER = LoggerFactory
             .getLogger(AtmosComponentAutoConfiguration.class);
     @Autowired
+    private ApplicationContext applicationContext;
+    @Autowired
     private CamelContext camelContext;
+    @Autowired
+    private AtmosComponentConfiguration configuration;
     @Autowired(required = false)
     private List<ComponentCustomizer<AtmosComponent>> customizers;
-    @Autowired
-    private ComponentConfigurationProperties globalConfiguration;
-    @Autowired
-    private AtmosComponentConfiguration componentConfiguration;
 
     static class GroupConditions extends GroupCondition {
         public GroupConditions() {
@@ -77,8 +80,8 @@ public class AtmosComponentAutoConfiguration {
         AtmosComponent component = new AtmosComponent();
         component.setCamelContext(camelContext);
         Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(componentConfiguration, parameters,
-                null, false);
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
         for (Map.Entry<String, Object> entry : parameters.entrySet()) {
             Object value = entry.getValue();
             Class<?> paramClass = value.getClass();
@@ -101,14 +104,23 @@ public class AtmosComponentAutoConfiguration {
         }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
-        boolean useCustomizers = globalConfiguration.getCustomizer()
-                .isEnabled()
-                && componentConfiguration.getCustomizer().isEnabled();
-        if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) {
+        if (ObjectHelper.isNotEmpty(customizers)) {
             for (ComponentCustomizer<AtmosComponent> customizer : customizers) 
{
-                LOGGER.debug("Configure component {}, with customizer {}",
-                        component, customizer);
-                customizer.customize(component);
+                boolean useCustomizer = (customizer instanceof HasId)
+                        ? HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.atmos.customizer",
+                                ((HasId) customizer).getId())
+                        : HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.atmos.customizer");
+                if (useCustomizer) {
+                    LOGGER.debug("Configure component {}, with customizer {}",
+                            component, customizer);
+                    customizer.customize(component);
+                }
             }
         }
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-atmosphere-websocket-starter/src/main/java/org/apache/camel/component/atmosphere/websocket/springboot/WebsocketComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-atmosphere-websocket-starter/src/main/java/org/apache/camel/component/atmosphere/websocket/springboot/WebsocketComponentAutoConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-atmosphere-websocket-starter/src/main/java/org/apache/camel/component/atmosphere/websocket/springboot/WebsocketComponentAutoConfiguration.java
index 7b21fe5..686616d 100644
--- 
a/platforms/spring-boot/components-starter/camel-atmosphere-websocket-starter/src/main/java/org/apache/camel/component/atmosphere/websocket/springboot/WebsocketComponentAutoConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-atmosphere-websocket-starter/src/main/java/org/apache/camel/component/atmosphere/websocket/springboot/WebsocketComponentAutoConfiguration.java
@@ -23,10 +23,12 @@ import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.atmosphere.websocket.WebsocketComponent;
 import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spi.HasId;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
 import org.apache.camel.spring.boot.ComponentConfigurationProperties;
 import 
org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
 import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -36,6 +38,7 @@ import 
org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
@@ -56,13 +59,13 @@ public class WebsocketComponentAutoConfiguration {
     private static final Logger LOGGER = LoggerFactory
             .getLogger(WebsocketComponentAutoConfiguration.class);
     @Autowired
+    private ApplicationContext applicationContext;
+    @Autowired
     private CamelContext camelContext;
+    @Autowired
+    private WebsocketComponentConfiguration configuration;
     @Autowired(required = false)
     private List<ComponentCustomizer<WebsocketComponent>> customizers;
-    @Autowired
-    private ComponentConfigurationProperties globalConfiguration;
-    @Autowired
-    private WebsocketComponentConfiguration componentConfiguration;
 
     static class GroupConditions extends GroupCondition {
         public GroupConditions() {
@@ -77,8 +80,8 @@ public class WebsocketComponentAutoConfiguration {
         WebsocketComponent component = new WebsocketComponent();
         component.setCamelContext(camelContext);
         Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(componentConfiguration, parameters,
-                null, false);
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
         for (Map.Entry<String, Object> entry : parameters.entrySet()) {
             Object value = entry.getValue();
             Class<?> paramClass = value.getClass();
@@ -101,14 +104,24 @@ public class WebsocketComponentAutoConfiguration {
         }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
-        boolean useCustomizers = globalConfiguration.getCustomizer()
-                .isEnabled()
-                && componentConfiguration.getCustomizer().isEnabled();
-        if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) {
+        if (ObjectHelper.isNotEmpty(customizers)) {
             for (ComponentCustomizer<WebsocketComponent> customizer : 
customizers) {
-                LOGGER.debug("Configure component {}, with customizer {}",
-                        component, customizer);
-                customizer.customize(component);
+                boolean useCustomizer = (customizer instanceof HasId)
+                        ? HierarchicalPropertiesEvaluator
+                                .evaluate(
+                                        applicationContext.getEnvironment(),
+                                        "camel.component.customizer",
+                                        
"camel.component.atmosphere-websocket.customizer",
+                                        ((HasId) customizer).getId())
+                        : HierarchicalPropertiesEvaluator
+                                .evaluate(applicationContext.getEnvironment(),
+                                        "camel.component.customizer",
+                                        
"camel.component.atmosphere-websocket.customizer");
+                if (useCustomizer) {
+                    LOGGER.debug("Configure component {}, with customizer {}",
+                            component, customizer);
+                    customizer.customize(component);
+                }
             }
         }
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-atom-starter/src/main/java/org/apache/camel/component/atom/springboot/AtomComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-atom-starter/src/main/java/org/apache/camel/component/atom/springboot/AtomComponentAutoConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-atom-starter/src/main/java/org/apache/camel/component/atom/springboot/AtomComponentAutoConfiguration.java
index 5f68096..95f5048 100644
--- 
a/platforms/spring-boot/components-starter/camel-atom-starter/src/main/java/org/apache/camel/component/atom/springboot/AtomComponentAutoConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-atom-starter/src/main/java/org/apache/camel/component/atom/springboot/AtomComponentAutoConfiguration.java
@@ -23,10 +23,12 @@ import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.atom.AtomComponent;
 import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spi.HasId;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
 import org.apache.camel.spring.boot.ComponentConfigurationProperties;
 import 
org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
 import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -36,6 +38,7 @@ import 
org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
@@ -56,13 +59,13 @@ public class AtomComponentAutoConfiguration {
     private static final Logger LOGGER = LoggerFactory
             .getLogger(AtomComponentAutoConfiguration.class);
     @Autowired
+    private ApplicationContext applicationContext;
+    @Autowired
     private CamelContext camelContext;
+    @Autowired
+    private AtomComponentConfiguration configuration;
     @Autowired(required = false)
     private List<ComponentCustomizer<AtomComponent>> customizers;
-    @Autowired
-    private ComponentConfigurationProperties globalConfiguration;
-    @Autowired
-    private AtomComponentConfiguration componentConfiguration;
 
     static class GroupConditions extends GroupCondition {
         public GroupConditions() {
@@ -77,8 +80,8 @@ public class AtomComponentAutoConfiguration {
         AtomComponent component = new AtomComponent();
         component.setCamelContext(camelContext);
         Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(componentConfiguration, parameters,
-                null, false);
+        IntrospectionSupport.getProperties(configuration, parameters, null,
+                false);
         for (Map.Entry<String, Object> entry : parameters.entrySet()) {
             Object value = entry.getValue();
             Class<?> paramClass = value.getClass();
@@ -101,14 +104,23 @@ public class AtomComponentAutoConfiguration {
         }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
-        boolean useCustomizers = globalConfiguration.getCustomizer()
-                .isEnabled()
-                && componentConfiguration.getCustomizer().isEnabled();
-        if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) {
+        if (ObjectHelper.isNotEmpty(customizers)) {
             for (ComponentCustomizer<AtomComponent> customizer : customizers) {
-                LOGGER.debug("Configure component {}, with customizer {}",
-                        component, customizer);
-                customizer.customize(component);
+                boolean useCustomizer = (customizer instanceof HasId)
+                        ? HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.atom.customizer",
+                                ((HasId) customizer).getId())
+                        : HierarchicalPropertiesEvaluator.evaluate(
+                                applicationContext.getEnvironment(),
+                                "camel.component.customizer",
+                                "camel.component.atom.customizer");
+                if (useCustomizer) {
+                    LOGGER.debug("Configure component {}, with customizer {}",
+                            component, customizer);
+                    customizer.customize(component);
+                }
             }
         }
         return component;

Reply via email to