@Test public void registerOuterConfig_withBeanNameGenerator() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.setBeanNameGenerator(new AnnotationBeanNameGenerator() { @Override public String generateBeanName( BeanDefinition definition, BeanDefinitionRegistry registry) { return "custom-" + super.generateBeanName(definition, registry); } }); ctx.register(A.class); ctx.refresh(); assertThat(ctx.containsBean("custom-outer"), is(true)); assertThat(ctx.containsBean("custom-imported"), is(true)); assertThat(ctx.containsBean("custom-nested"), is(true)); assertThat(ctx.containsBean("nestedBean"), is(true)); }
@Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException { if (registry.containsBeanDefinition("restServer")) { BeanDefinition beanDefinition = registry.getBeanDefinition("restServer"); ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false); scanner.addIncludeFilter(new AnnotationTypeFilter(Path.class)); BeanNameGenerator nameGenerator = new AnnotationBeanNameGenerator(); List<RuntimeBeanReference> beanNames = new ManagedList<>(); for (BeanDefinition definition : scanner.findCandidateComponents("net.techreadiness")) { String beanName = nameGenerator.generateBeanName(definition, registry); beanNames.add(new RuntimeBeanReference(beanName)); } beanNames.addAll((Collection<? extends RuntimeBeanReference>) beanDefinition.getPropertyValues() .getPropertyValue("serviceBeans").getValue()); beanDefinition.getPropertyValues().add("serviceBeans", beanNames); } }
@Test @SuppressWarnings("resource") public void withBeanNameGenerator() { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.setBeanNameGenerator(new AnnotationBeanNameGenerator() { @Override public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) { return "custom-" + super.generateBeanName(definition, registry); } }); ctx.setConfigLocation(Config.class.getName()); ctx.refresh(); assertThat(ctx.containsBean("custom-myConfig"), is(true)); }
@Test public void withBeanNameGenerator() { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.setBeanNameGenerator(new AnnotationBeanNameGenerator() { @Override public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) { return "custom-" + super.generateBeanName(definition, registry); } }); ctx.setConfigLocation(Config.class.getName()); ctx.refresh(); assertThat(ctx.containsBean("custom-myConfig"), is(true)); }