提供自动扫描功能的核心类是:ClassPathBeanDefinitionScanner
使用Classpath扫描机制:第一种是直接使用AnnotationConfigApplicationContext,该类有一个scan(String
basePackages)方法,可以对指定的包进行扫描
1.配置需要扫描的类;
2.在需要被纳入Spring容器的类上加上相应的注解;
3.Spring在类路径下寻找标注了注解的类,并把这些类纳入Spring容器中管理。
读取配置文件,获取配置的包路径。根据包路径,获取包下所有的class对象,通过getAnnotion()方法,判断是否有注解且注解的类型是否在过滤规则中存在,若通过过滤则存放到spring容器中,
提供自动扫描功能的核心类是:ClassPathBeanDefinitionScanner,该类根据提供个基础包名,扫描classpath下与该包名的路径下,找到复合条件的类并注册为Spring的一个Bean。
很早之前,为了简化配置信息,自己写了一坨代码,基于classpath扫描类信息,加载.
其实,在spring中,已经提供了类似组件(后知后觉了...):
org.springframework.core.io.support.PathMatchingResourcePatternResolver 资源解析器(基于路径的正则表达式)
org.springframework.core.type.classreading.MetadataReader ClassMeta信息解读器
public class Test {
/* 资源路径 */
private static final String PATH = "classpath*:com/alibaba/javalab/t*/**/*.class";
/* 资源解析器 */
private static final ResourcePatternResolver RESOLVER = new PathMatchingResourcePatternResolver();
/* Meta信息Reader Factory.用于创建MetaReader */
private static final MetadataReaderFactory READER_FACTORY = new SimpleMetadataReaderFactory();
public static void main(String[] args) throws Exception {
//根据正则表达式,得到资源列表
Resource[] resources = RESOLVER.getResources(PATH);
for (Resource res : resources) {
//通过 MetadataReader得到ClassMeta信息,打印类名
MetadataReader meta = READER_FACTORY.getMetadataReader(res);
System.out.println(meta.getClassMetadata().getClassName());
}
}
}
基于struts2 的自动扩展插件:
扩展方式为:jar文件加上配置文件中的相关配置.
扩展原理为:
struts2启动配置,开始分析FiterDispatcher过滤类:
获取默认的参数创建dispacher对象,在对dispacher对象的一系列初始化工作中,读取系统配置文件以及用户自定义的配置文件。在读取xml配置文件时,根据用户配置的名称(如果没有,则采用系统默认的struts-default.xml,struts-plugin.xml,struts.xml三个名称),利用配置管理器对象,来加载项目中的xml配置文件,加载过程如下:
通过ClassLoader类中的getResources()方法,获取项目中所有与名称相匹配的文件,并采用DOM方式解析xml,对xml文件中的每个<bean>元素,获取type,name,class,static,scope,optional这些属性,针对每个属性的值做相应的处理,将属性提交给struts管理容器注册,最后注入bean。
分享到:
相关推荐
这是对Spring中注解是怎么实现的一个大概基本原理,条件是采取的理想状态,所以代码中还有缺陷的话请谅解,如果有需要的朋友可以放心下载,里面有详细的解释和流程。相信你能看懂
Spring注解
spring注解笔记spring注解笔记spring注解笔记spring注解笔记
Spring注解注入属性
《Spring注解驱动开发》是一套帮助我们深入了解Spring原理机制的教程; 现今SpringBoot、SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解、原理,比如@Conditional、@Import...
Spring注解大全,注解整理方式采用思维导图工具(XMind)整理,对注解按自己的方式进行了分类,并对所有的注解在备注中进行了解释说明;
spring 注解
要学习hibernate注解和spring注解的,可以下载, 该工程包括了hibernate注解和spring注解做的登录例子
Spring注解描述,底层笔记
Spring注解所依赖的包。com.springSource.javax.annotation
Spring注解驱动开发.pdf
SPring注解及页面跳转实例
Spring demo 自动检测注解
Spring注解驱动开发.xmind
spring注解详细
Spring注解入门
spring 注解 aop demo spring 注解 aop demo spring 注解 aop demo spring 注解 aop demo
spring注解完整版[定义].pdf
NULL 博文链接:https://zxf-noimp.iteye.com/blog/1071765
spring注解,只是自己的收集可能对于你们有一定的帮助