Spring源码(9)--- FactoryBean解析

FactoryBean是一个接口,实现此接口可以实现bean的定制化实例化逻辑。 很简单的例子,比如说Spring实例化bean是依靠反射来进行,那么我们完全可以定制一个bean不走Spring的实例化bean的逻辑,按照我们自己的逻辑来,比如说直接new ,或是通过其他Factory创建bean,然后将bean返回。
阅读全文

Spring源码(7)---内置beans标签的解析

在这段代码中: 1.获取`default-autowire、default-lazy-init、default-merge`等属性值,如果默认属性值为`default`,那么使用parent中的属性值进行覆盖,如果不是`default`,是什么属性就设置什么。2.如果`default-autowire-candidates、default-init-method、default-destroy
阅读全文

Spring源码(6)---alias标签的解析

这里是以下的步骤: 1. 6-8行代码:判断如果别名和name一样,那么就直接从aliasMap中移除别名的映射,因为两个名字一样,那么通过beanName就可以找到bean,不用多一次转换。 2. 10-15行代码:aliasMap中获取到name,然后判断和要注册的name是否一致,如果一样,那么就不用注册了。 3. 17行代码:如果不允许覆盖别名,那么就直接抛出异常。
阅读全文

Spring源码(5)---import标签的解析

1.获取import标签中resource的属性值,也就是路径,然后解析系统属性(路径中包含系统属性),比如说${user.dir}这种属性,不过实际应用中很少用到这种系统属性。 2.通过resource的路径来判断是绝对路径还是相对路径,主要是判断路径是否是"classpath"或是"classpath*"开头,或是标准的URL,如果是,那么absoluteLocation为true。
阅读全文

Java中的ThreadLocal简介及应用

该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。
阅读全文
Loading...