Java Code Examples for org.springframework.core.type.classreading.MetadataReader#getAnnotationMetadata()
The following examples show how to use
org.springframework.core.type.classreading.MetadataReader#getAnnotationMetadata() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: MyTypeFilter.java From code with Apache License 2.0 | 6 votes |
/** * 自定义包扫描过滤规则 * * @param metadataReader 读取到当前正在扫描的类的信息 * @param metadataReaderFactory 获取其他任何类型 * @return boolean */ @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { // 获取当前正在扫描的类注解的信息 AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata(); // 获取当前正在扫描的类的信息 ClassMetadata classMetadata = metadataReader.getClassMetadata(); // 获取类名 String className = classMetadata.getClassName(); System.out.println("扫描的类——》" + className); // 根据类名进行过滤 if (className.contains("Book")) { return true; } // 证明filter在Conditional之前拦截 //Annotation[] annotations = classMetadata.getClass().getAnnotations(); //for (Annotation annotation : annotations) { // if (annotation.annotationType() == Conditional.class) { // return false; // } //} //return true; return false; }
Example 2
Source File: MangoDaoAutoCreator.java From mango-spring-boot-starter with Apache License 2.0 | 6 votes |
private List<Class<?>> findMangoDaoClasses(String packages) { try { List<Class<?>> daos = new ArrayList<Class<?>>(); ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resourcePatternResolver); for (String locationPattern : getLocationPattern(packages)) { Resource[] rs = resourcePatternResolver.getResources(locationPattern); for (Resource r : rs) { MetadataReader reader = metadataReaderFactory.getMetadataReader(r); AnnotationMetadata annotationMD = reader.getAnnotationMetadata(); if (annotationMD.hasAnnotation(DB.class.getName())) { ClassMetadata clazzMD = reader.getClassMetadata(); daos.add(Class.forName(clazzMD.getClassName())); } } } return daos; } catch (Exception e) { throw new IllegalStateException(e.getMessage(), e); } }
Example 3
Source File: TransactionalServiceAnnotationMetadataBootstrap.java From thinking-in-spring-boot-samples with Apache License 2.0 | 6 votes |
public static void main(String[] args) throws IOException { // @TransactionalService 标注在当前类 TransactionalServiceAnnotationMetadataBootstrap String className = TransactionalServiceAnnotationMetadataBootstrap.class.getName(); // 构建 MetadataReaderFactory 实例 MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(); // 读取 @TransactionService MetadataReader 信息 MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(className); // 读取 @TransactionService AnnotationMetadata 信息 AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata(); annotationMetadata.getAnnotationTypes().forEach(annotationType -> { Set<String> metaAnnotationTypes = annotationMetadata.getMetaAnnotationTypes(annotationType); metaAnnotationTypes.forEach(metaAnnotationType -> { System.out.printf("注解 @%s 元标注 @%s\n", annotationType, metaAnnotationType); }); }); }
Example 4
Source File: MyTypeFilter.java From SpringAll with MIT License | 5 votes |
@Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) { // 获取当前正在扫描的类的注解信息 AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata(); // 获取当前正在扫描的类的类信息 ClassMetadata classMetadata = metadataReader.getClassMetadata(); // 获取当前正在扫描的类的路径等信息 Resource resource = metadataReader.getResource(); String className = classMetadata.getClassName(); return StringUtils.hasText("er"); }
Example 5
Source File: AnnotationMetadataTests.java From spring4-understanding with Apache License 2.0 | 5 votes |
@Test public void asmAnnotationMetadataForInterface() throws Exception { MetadataReaderFactory metadataReaderFactory = new SimpleMetadataReaderFactory(); MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(AnnotationMetadata.class.getName()); AnnotationMetadata metadata = metadataReader.getAnnotationMetadata(); doTestMetadataForInterfaceClass(metadata); }
Example 6
Source File: LuceneXmlParser.java From jstarcraft-core with Apache License 2.0 | 5 votes |
private String[] getResources(String packageName) { try { // 搜索资源 String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(SystemPropertyUtils.resolvePlaceholders(packageName)) + "/" + DEFAULT_RESOURCE_PATTERN; Resource[] resources = resourcePatternResolver.getResources(packageSearchPath); // 提取资源 Set<String> names = new HashSet<String>(); String document = LuceneConfiguration.class.getName(); for (Resource resource : resources) { if (!resource.isReadable()) { continue; } // 判断是否静态资源 MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource); AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata(); if (!annotationMetadata.hasAnnotation(document)) { continue; } ClassMetadata classMetadata = metadataReader.getClassMetadata(); names.add(classMetadata.getClassName()); } return names.toArray(new String[0]); } catch (IOException exception) { String message = "无法获取资源"; LOGGER.error(message, exception); throw new StorageConfigurationException(message, exception); } }
Example 7
Source File: AnnotationMetadataTests.java From spring4-understanding with Apache License 2.0 | 5 votes |
@Test public void asmAnnotationMetadataForSubclass() throws Exception { MetadataReaderFactory metadataReaderFactory = new SimpleMetadataReaderFactory(); MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(AnnotatedComponentSubClass.class.getName()); AnnotationMetadata metadata = metadataReader.getAnnotationMetadata(); doTestSubClassAnnotationInfo(metadata); }
Example 8
Source File: AnnotationMetadataTests.java From spring-analysis-note with MIT License | 5 votes |
@Test public void metaAnnotationOverridesUsingAnnotationMetadataReadingVisitor() throws Exception { MetadataReaderFactory metadataReaderFactory = new SimpleMetadataReaderFactory(); MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(ComposedConfigurationWithAttributeOverridesClass.class.getName()); AnnotationMetadata metadata = metadataReader.getAnnotationMetadata(); assertMetaAnnotationOverrides(metadata); }
Example 9
Source File: AnnotationMetadataTests.java From spring-analysis-note with MIT License | 5 votes |
@Test public void asmAnnotationMetadataForSubclass() throws Exception { MetadataReaderFactory metadataReaderFactory = new SimpleMetadataReaderFactory(); MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(AnnotatedComponentSubClass.class.getName()); AnnotationMetadata metadata = metadataReader.getAnnotationMetadata(); doTestSubClassAnnotationInfo(metadata); }
Example 10
Source File: AnnotationMetadataTests.java From spring-analysis-note with MIT License | 5 votes |
@Test public void asmAnnotationMetadata() throws Exception { MetadataReaderFactory metadataReaderFactory = new SimpleMetadataReaderFactory(); MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(AnnotatedComponent.class.getName()); AnnotationMetadata metadata = metadataReader.getAnnotationMetadata(); doTestAnnotationInfo(metadata); doTestMethodAnnotationInfo(metadata); }
Example 11
Source File: BerkeleyXmlParser.java From jstarcraft-core with Apache License 2.0 | 5 votes |
private String[] getResources(String packageName) { try { // 搜索资源 String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(SystemPropertyUtils.resolvePlaceholders(packageName)) + "/" + DEFAULT_RESOURCE_PATTERN; Resource[] resources = resourcePatternResolver.getResources(packageSearchPath); // 提取资源 Set<String> names = new HashSet<String>(); String entity = Entity.class.getName(); String persistent = Persistent.class.getName(); for (Resource resource : resources) { if (!resource.isReadable()) { continue; } // 判断是否静态资源 MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource); AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata(); if (!annotationMetadata.hasAnnotation(entity) && !annotationMetadata.hasAnnotation(persistent)) { continue; } ClassMetadata classMetadata = metadataReader.getClassMetadata(); names.add(classMetadata.getClassName()); } return names.toArray(new String[0]); } catch (IOException exception) { String message = "无法获取资源"; LOGGER.error(message, exception); throw new StorageConfigurationException(message, exception); } }
Example 12
Source File: AnnotationScopeMetadataResolverTests.java From spring-analysis-note with MIT License | 5 votes |
@Test public void customRequestScopeWithAttributeViaAsm() throws IOException { MetadataReaderFactory readerFactory = new SimpleMetadataReaderFactory(); MetadataReader reader = readerFactory.getMetadataReader(AnnotatedWithCustomRequestScopeWithAttributeOverride.class.getName()); AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition(reader.getAnnotationMetadata()); ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(bd); assertNotNull("resolveScopeMetadata(..) must *never* return null.", scopeMetadata); assertEquals("request", scopeMetadata.getScopeName()); assertEquals(TARGET_CLASS, scopeMetadata.getScopedProxyMode()); }
Example 13
Source File: AnnotationScopeMetadataResolverTests.java From spring-analysis-note with MIT License | 5 votes |
@Test public void customRequestScopeViaAsm() throws IOException { MetadataReaderFactory readerFactory = new SimpleMetadataReaderFactory(); MetadataReader reader = readerFactory.getMetadataReader(AnnotatedWithCustomRequestScope.class.getName()); AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition(reader.getAnnotationMetadata()); ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(bd); assertNotNull("resolveScopeMetadata(..) must *never* return null.", scopeMetadata); assertEquals("request", scopeMetadata.getScopeName()); assertEquals(NO, scopeMetadata.getScopedProxyMode()); }
Example 14
Source File: ConfigurationClass.java From spring-analysis-note with MIT License | 5 votes |
/** * Create a new {@link ConfigurationClass} with the given name. * @param metadataReader reader used to parse the underlying {@link Class} * @param beanName must not be {@code null} * @see ConfigurationClass#ConfigurationClass(Class, ConfigurationClass) */ public ConfigurationClass(MetadataReader metadataReader, String beanName) { Assert.notNull(beanName, "Bean name must not be null"); this.metadata = metadataReader.getAnnotationMetadata(); this.resource = metadataReader.getResource(); this.beanName = beanName; }
Example 15
Source File: ScannedGenericBeanDefinition.java From lams with GNU General Public License v2.0 | 4 votes |
/** * Create a new ScannedGenericBeanDefinition for the class that the * given MetadataReader describes. * @param metadataReader the MetadataReader for the scanned target class */ public ScannedGenericBeanDefinition(MetadataReader metadataReader) { Assert.notNull(metadataReader, "MetadataReader must not be null"); this.metadata = metadataReader.getAnnotationMetadata(); setBeanClassName(this.metadata.getClassName()); }
Example 16
Source File: PublicApiHttpClient.java From alfresco-remote-api with GNU Lesser General Public License v3.0 | 4 votes |
protected AnnotationMetadata getAnnotationMetadata(String classname) throws IOException { MetadataReader metadataReader = this.metadataReaderFactory.getMetadataReader(classname); AnnotationMetadata annotationMetaData = metadataReader.getAnnotationMetadata(); return annotationMetaData; }
Example 17
Source File: ScannedGenericBeanDefinition.java From spring4-understanding with Apache License 2.0 | 4 votes |
/** * Create a new ScannedGenericBeanDefinition for the class that the * given MetadataReader describes. * @param metadataReader the MetadataReader for the scanned target class */ public ScannedGenericBeanDefinition(MetadataReader metadataReader) { Assert.notNull(metadataReader, "MetadataReader must not be null"); this.metadata = metadataReader.getAnnotationMetadata(); setBeanClassName(this.metadata.getClassName()); }
Example 18
Source File: AnnotationMetadataPerformanceBootstrap.java From thinking-in-spring-boot-samples with Apache License 2.0 | 3 votes |
public static void main(String[] args) throws IOException { // 反射实现 AnnotationMetadata standardAnnotationMetadata = new StandardAnnotationMetadata(TransactionalService.class); SimpleMetadataReaderFactory factory = new SimpleMetadataReaderFactory(); MetadataReader metadataReader = factory.getMetadataReader(TransactionalService.class.getName()); // ASM 实现 AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata(); int times = 10 * 10000; // 10 万次 testAnnotationMetadataPerformance(standardAnnotationMetadata, times); testAnnotationMetadataPerformance(annotationMetadata, times); times = 100 * 10000; // 100 万次 testAnnotationMetadataPerformance(standardAnnotationMetadata, times); testAnnotationMetadataPerformance(annotationMetadata, times); times = 1000 * 10000; // 1000 万次 testAnnotationMetadataPerformance(standardAnnotationMetadata, times); testAnnotationMetadataPerformance(annotationMetadata, times); times = 10000 * 10000; // 1 亿次 testAnnotationMetadataPerformance(standardAnnotationMetadata, times); testAnnotationMetadataPerformance(annotationMetadata, times); }
Example 19
Source File: ConfigurationClass.java From spring-analysis-note with MIT License | 2 votes |
/** * Create a new {@link ConfigurationClass} representing a class that was imported * using the {@link Import} annotation or automatically processed as a nested * configuration class (if importedBy is not {@code null}). * @param metadataReader reader used to parse the underlying {@link Class} * @param importedBy the configuration class importing this one or {@code null} * @since 3.1.1 */ public ConfigurationClass(MetadataReader metadataReader, @Nullable ConfigurationClass importedBy) { this.metadata = metadataReader.getAnnotationMetadata(); this.resource = metadataReader.getResource(); this.importedBy.add(importedBy); }
Example 20
Source File: ConfigurationClass.java From lams with GNU General Public License v2.0 | 2 votes |
/** * Create a new {@link ConfigurationClass} representing a class that was imported * using the {@link Import} annotation or automatically processed as a nested * configuration class (if importedBy is not {@code null}). * @param metadataReader reader used to parse the underlying {@link Class} * @param importedBy the configuration class importing this one or {@code null} * @since 3.1.1 */ public ConfigurationClass(MetadataReader metadataReader, ConfigurationClass importedBy) { this.metadata = metadataReader.getAnnotationMetadata(); this.resource = metadataReader.getResource(); this.importedBy.add(importedBy); }