package io.spring.presentations.jcmm.yourown.v3; import io.spring.presentations.jcmm.CustomService; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.env.Environment; import org.springframework.core.type.AnnotationMetadata; public class MyConfigImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar, EnvironmentAware { private Environment environment; public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { if(this.environment.acceptsProfiles("default")) { AnnotationAttributes attributes = AnnotationAttributes.fromMap( importingClassMetadata.getAnnotationAttributes(EnableMyConfigV3.class.getName())); String message = attributes.getString("value"); RootBeanDefinition beanDefinition = new RootBeanDefinition(CustomService.class); beanDefinition.getPropertyValues().add("message", message); registry.registerBeanDefinition("myCustomService", beanDefinition); } } public void setEnvironment(Environment environment) { this.environment = environment; } }