protected void parseTypeFilters(Element element, ClassPathBeanDefinitionScanner scanner, ParserContext parserContext) { // Parse exclude and include filter elements. ClassLoader classLoader = scanner.getResourceLoader().getClassLoader(); NodeList nodeList = element.getChildNodes(); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { String localName = parserContext.getDelegate().getLocalName(node); try { if (INCLUDE_FILTER_ELEMENT.equals(localName)) { TypeFilter typeFilter = createTypeFilter((Element) node, classLoader, parserContext); scanner.addIncludeFilter(typeFilter); } else if (EXCLUDE_FILTER_ELEMENT.equals(localName)) { TypeFilter typeFilter = createTypeFilter((Element) node, classLoader, parserContext); scanner.addExcludeFilter(typeFilter); } } catch (ClassNotFoundException ex) { parserContext.getReaderContext().warning( "Ignoring non-present type filter class: " + ex, parserContext.extractSource(element)); } catch (Exception ex) { parserContext.getReaderContext().error( ex.getMessage(), parserContext.extractSource(element), ex.getCause()); } } } }
BeanDefinitionRegistry bdr = new SimpleBeanDefinitionRegistry(); ClassPathBeanDefinitionScanner s = new ClassPathBeanDefinitionScanner(bdr); TypeFilter tf = new AssignableTypeFilter(CLASS_YOU_WANT.class); s.addIncludeFilter(tf); s.scan("package.you.want1", "package.you.want2"); String[] beans = bdr.getBeanDefinitionNames();
protected void parseTypeFilters(Element element, ClassPathBeanDefinitionScanner scanner, ParserContext parserContext) { // Parse exclude and include filter elements. ClassLoader classLoader = scanner.getResourceLoader().getClassLoader(); NodeList nodeList = element.getChildNodes(); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { String localName = parserContext.getDelegate().getLocalName(node); try { if (INCLUDE_FILTER_ELEMENT.equals(localName)) { TypeFilter typeFilter = createTypeFilter((Element) node, classLoader, parserContext); scanner.addIncludeFilter(typeFilter); } else if (EXCLUDE_FILTER_ELEMENT.equals(localName)) { TypeFilter typeFilter = createTypeFilter((Element) node, classLoader, parserContext); scanner.addExcludeFilter(typeFilter); } } catch (ClassNotFoundException ex) { parserContext.getReaderContext().warning( "Ignoring non-present type filter class: " + ex, parserContext.extractSource(element)); } catch (Exception ex) { parserContext.getReaderContext().error( ex.getMessage(), parserContext.extractSource(element), ex.getCause()); } } } }
scanner.addIncludeFilter(typeFilter);
scanner.addIncludeFilter(typeFilter);
@Test public void testCustomIncludeFilterWithoutDefaultsButIncludingPostProcessors() { GenericApplicationContext context = new GenericApplicationContext(); ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context, false); scanner.addIncludeFilter(new AnnotationTypeFilter(CustomComponent.class)); int beanCount = scanner.scan(BASE_PACKAGE); assertEquals(6, beanCount); assertTrue(context.containsBean("messageBean")); assertTrue(context.containsBean(AnnotationConfigUtils.AUTOWIRED_ANNOTATION_PROCESSOR_BEAN_NAME)); assertTrue(context.containsBean(AnnotationConfigUtils.COMMON_ANNOTATION_PROCESSOR_BEAN_NAME)); assertTrue(context.containsBean(AnnotationConfigUtils.EVENT_LISTENER_PROCESSOR_BEAN_NAME)); assertTrue(context.containsBean(AnnotationConfigUtils.EVENT_LISTENER_FACTORY_BEAN_NAME)); }
@Test public void testCustomIncludeFilterWithoutDefaultsAndNoPostProcessors() { GenericApplicationContext context = new GenericApplicationContext(); ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context, false); scanner.addIncludeFilter(new AnnotationTypeFilter(CustomComponent.class)); int beanCount = scanner.scan(BASE_PACKAGE); assertEquals(6, beanCount); assertTrue(context.containsBean("messageBean")); assertFalse(context.containsBean("serviceInvocationCounter")); assertFalse(context.containsBean("fooServiceImpl")); assertFalse(context.containsBean("stubFooDao")); assertFalse(context.containsBean("myNamedComponent")); assertFalse(context.containsBean("myNamedDao")); assertTrue(context.containsBean(AnnotationConfigUtils.AUTOWIRED_ANNOTATION_PROCESSOR_BEAN_NAME)); assertTrue(context.containsBean(AnnotationConfigUtils.COMMON_ANNOTATION_PROCESSOR_BEAN_NAME)); assertTrue(context.containsBean(AnnotationConfigUtils.EVENT_LISTENER_PROCESSOR_BEAN_NAME)); assertTrue(context.containsBean(AnnotationConfigUtils.EVENT_LISTENER_FACTORY_BEAN_NAME)); }
@Test public void testCustomIncludeFilterAndDefaults() { GenericApplicationContext context = new GenericApplicationContext(); ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context, true); scanner.addIncludeFilter(new AnnotationTypeFilter(CustomComponent.class)); int beanCount = scanner.scan(BASE_PACKAGE); assertEquals(13, beanCount); assertTrue(context.containsBean("messageBean")); assertTrue(context.containsBean("serviceInvocationCounter")); assertTrue(context.containsBean("fooServiceImpl")); assertTrue(context.containsBean("stubFooDao")); assertTrue(context.containsBean("myNamedComponent")); assertTrue(context.containsBean("myNamedDao")); assertTrue(context.containsBean(AnnotationConfigUtils.AUTOWIRED_ANNOTATION_PROCESSOR_BEAN_NAME)); assertTrue(context.containsBean(AnnotationConfigUtils.COMMON_ANNOTATION_PROCESSOR_BEAN_NAME)); assertTrue(context.containsBean(AnnotationConfigUtils.EVENT_LISTENER_PROCESSOR_BEAN_NAME)); assertTrue(context.containsBean(AnnotationConfigUtils.EVENT_LISTENER_FACTORY_BEAN_NAME)); }
public RpcInvokerAnnotationScanner(BeanDefinitionRegistry registry,Map<String,AbstractRpcClient> rpcClients) { super(registry,false); this.rpcClients = rpcClients; super.addIncludeFilter(new TypeFilter(){ @Override public boolean match(MetadataReader metadataReader,MetadataReaderFactory metadataReaderFactory)throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return acceptClassName(className); } }); }
protected void parseTypeFilters(Element element, ClassPathBeanDefinitionScanner scanner, ParserContext parserContext) { super.parseTypeFilters(element, scanner, parserContext); ClassLoader classLoader = scanner.getResourceLoader().getClassLoader(); scanner.addIncludeFilter( createTypeFilter("annotation", AutoRootApplicationConfig.class.getName(), classLoader, parserContext)); if (Boolean.parseBoolean(element.getAttribute("use-default-IncludeFilter"))) { scanner.addIncludeFilter( createTypeFilter("annotation", Service.class.getName(), classLoader, parserContext)); } }
protected void parseTypeFilters(Element element, ClassPathBeanDefinitionScanner scanner, ParserContext parserContext) { super.parseTypeFilters(element, scanner, parserContext); ClassLoader classLoader = scanner.getResourceLoader().getClassLoader(); scanner.addIncludeFilter( createTypeFilter("annotation", AutoWebApplicationConfig.class.getName(), classLoader, parserContext)); if (Boolean.parseBoolean(element.getAttribute("use-default-IncludeFilter"))) { scanner.addIncludeFilter( createTypeFilter("annotation", Controller.class.getName(), classLoader, parserContext)); } }
public class Main { public static void main(String[] args) { GenericApplicationContext context = new GenericApplicationContext(); ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context, false); scanner.addIncludeFilter((metadataReader, metadataReaderFactory) -> true); scanner.scan("net.company.name"); context.refresh(); A a = context.getBean(A.class); System.out.println(a.toString()); } }
protected void parseTypeFilters(Element element, ClassPathBeanDefinitionScanner scanner, ParserContext parserContext) { super.parseTypeFilters(element, scanner, parserContext); ClassLoader classLoader = scanner.getResourceLoader().getClassLoader(); scanner.addIncludeFilter( createTypeFilter("annotation", AutoProxyApplicationConfig.class.getName(), classLoader, parserContext)); }
private ClassPathBeanDefinitionScanner createComponentProvider() { ClassPathBeanDefinitionScanner componentProvider = new ClassPathBeanDefinitionScanner((BeanDefinitionRegistry) applicationContext, false); TypeFilter excludeFilter = new AnnotationTypeFilter(Service.class); componentProvider.addIncludeFilter(excludeFilter); componentProvider.setEnvironment(this.applicationContext.getEnvironment()); componentProvider.setResourceLoader(this.applicationContext); return componentProvider; }
BeanDefinitionRegistry bdr = new SimpleBeanDefinitionRegistry(); ClassPathBeanDefinitionScanner s = new ClassPathBeanDefinitionScanner(bdr); TypeFilter tf = new AssignableTypeFilter(Idable.class); s.addIncludeFilter(tf); s.scan("org.willix.model"); entities = bdr.getBeanDefinitionNames();
private ClassPathBeanDefinitionScanner createScanner() { ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context); scanner.setIncludeAnnotationConfig(true); scanner.addIncludeFilter(new AnnotationTypeFilter(StickyComponent.class)); return scanner; }
@Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { // Create the annotation-based context AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(context, false); scanner.addIncludeFilter(new ServiceTypeFilter()); final String basePackage = StringUtils.substringBeforeLast(importingClassMetadata.getClassName(), "."); scanner.scan(basePackage); // Import scanned services in current registry final String[] names = context.getBeanDefinitionNames(); for (String name : names) { final BeanDefinition definition = context.getBeanDefinition(name); registry.registerBeanDefinition(name, definition); } } }
protected ClassPathBeanDefinitionScanner createClassPathBeanDefinitionScanner() { ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(this); ClassLoader classLoader = scanner.getResourceLoader().getClassLoader(); scanner.addIncludeFilter(createTypeFilter("annotation", AutoConfig.class.getName(), classLoader)); scanner.setBeanNameGenerator(new ConfigAnnotationBeanNameGenerator()); return scanner; }
@Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { ClassPathBeanDefinitionScanner scanner = new ClassPathGrpcServiceScanner(registry); scanner.setResourceLoader(this.resourceLoader); scanner.addIncludeFilter(new AnnotationTypeFilter(GrpcService.class)); Set<BeanDefinition> beanDefinitions = scanPackages(importingClassMetadata, scanner); ProxyUtil.registBeans(beanFactory, beanDefinitions); }
private ClassPathBeanDefinitionScanner configureScanner(ParserContext parserContext, BeanDefinitionRegistry registry) { XmlReaderContext readerContext = parserContext.getReaderContext(); // Delegate bean definition registration to scanner class. ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(registry, false); scanner.setIncludeAnnotationConfig(false); scanner.addIncludeFilter(new AnnotationTypeFilter(Entity.class)); scanner.setResourceLoader(readerContext.getResourceLoader()); scanner.setBeanDefinitionDefaults(parserContext.getDelegate().getBeanDefinitionDefaults()); scanner.setAutowireCandidatePatterns(parserContext.getDelegate().getAutowireCandidatePatterns()); return scanner; } }