简单工厂(非23种设计模式中的一种)
BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象
工厂方法
FactoryBean接口。
实现FactoryBean接口,重写getObject方法自定义Bean的实例类型;spring会在使用getBean()调用获得该bean时,会自动调用该bean的getObject()方法。
单例模式
获取单例Bean的方法实现就是单例模式的实现,提供了全局唯一的获取Bean的方法入口,但是没有从构造器级别去控制单例,这是因为spring管理的是任意的java对象。
protected Object getSingleton(String beanName, boolean allowEarlyReference) {
//检查缓存中是否存在实例
Object singletonObject = this.singletonObjects.get(beanName);
if (singletonObject == null && isSingletonCurrentlyInCreation(beanName)) {
//如果为空,则锁定全局变量并进行处理。
synchronized (this.singletonObjects) {
//如果此bean正在加载,则不处理
singletonObject = this.earlySingletonObjects.get(beanName);
if (singlet