/** * Create a new {@link AnnotationConfigReactiveWebServerApplicationContext}, deriving * bean definitions from the given annotated classes and automatically refreshing the * context. * @param annotatedClasses one or more annotated classes, e.g. {@code @Configuration} * classes */ public AnnotationConfigReactiveWebServerApplicationContext( Class<?>... annotatedClasses) { this(); register(annotatedClasses); refresh(); }
/** * Create a new {@link AnnotationConfigReactiveWebServerApplicationContext}, scanning * for bean definitions in the given packages and automatically refreshing the * context. * @param basePackages the packages to check for annotated classes */ public AnnotationConfigReactiveWebServerApplicationContext(String... basePackages) { this(); scan(basePackages); refresh(); }
private ConfigurableApplicationContext create() { AnnotationConfigReactiveWebServerApplicationContext context = new AnnotationConfigReactiveWebServerApplicationContext(); registerDemoApplication(context); context.register(AutoConfiguration.class); context.refresh(); return context; }
@Override public ConfigurableWebServerApplicationContext createManagementContext( ApplicationContext parent, Class<?>... configClasses) { AnnotationConfigReactiveWebServerApplicationContext child = new AnnotationConfigReactiveWebServerApplicationContext(); child.setParent(parent); Class<?>[] combinedClasses = ObjectUtils.addObjectToArray(configClasses, ReactiveWebServerFactoryAutoConfiguration.class); child.register(combinedClasses); registerReactiveWebServerFactory(parent, child); return child; }
/** * Provide a custom {@link BeanNameGenerator} for use with * {@link AnnotatedBeanDefinitionReader} and/or * {@link ClassPathBeanDefinitionScanner}, if any. * <p> * Default is * {@link org.springframework.context.annotation.AnnotationBeanNameGenerator}. * <p> * Any call to this method must occur prior to calls to {@link #register(Class...)} * and/or {@link #scan(String...)}. * @param beanNameGenerator the bean name generator * @see AnnotatedBeanDefinitionReader#setBeanNameGenerator * @see ClassPathBeanDefinitionScanner#setBeanNameGenerator */ public void setBeanNameGenerator(BeanNameGenerator beanNameGenerator) { this.reader.setBeanNameGenerator(beanNameGenerator); this.scanner.setBeanNameGenerator(beanNameGenerator); this.getBeanFactory().registerSingleton( AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR, beanNameGenerator); }
@Override public void postProcessBeanFactory( ConfigurableListableBeanFactory beanFactory) { super.postProcessBeanFactory(beanFactory); } }
private void registerReactiveWebServerFactory(ApplicationContext parent, AnnotationConfigReactiveWebServerApplicationContext childContext) { try { ConfigurableListableBeanFactory beanFactory = childContext.getBeanFactory(); if (beanFactory instanceof BeanDefinitionRegistry) { BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory; registry.registerBeanDefinition("ReactiveWebServerFactory", new RootBeanDefinition( determineReactiveWebServerFactoryClass(parent))); } } catch (NoSuchBeanDefinitionException ex) { // Ignore and assume auto-configuration } }