首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Spring获取Bean 源码浅析

今天开门见山,直接亮代码~ MyTestBean bean = (MyTestBean)bf.getBean("myTestBean") 我想上面这行代码,第一次接触过spring这个框架时都应该接触过...;读取xml中我们配置的bean; spring分为7大部分组成,有一个部分叫做:SpringBean; 为了知道这句代码实现了什么样的功能,看官可以可以打开你的开发工具,找到下面这张图的几个包; ?...; 下面介绍的就是从缓存中获取bean的情况; ?...从上面代码可以看到,spring依赖注入时,使用了双重判断加锁的单例模式,首先从缓存中获取bean实例,如果为null,对缓存map加锁,然后再从缓存中获取bean,如果继续为null,就创建一个bean...这就是spring获取bean的一个简单流程;创建了spring的bean对象,还没完,还没有实例化这个bean。 且听下回分解~

53020

Spring获取Bean的9种方式

比如,在某一些工具类、设计模式实现中需要使用到Spring容器管理的Bean,此时就需要直接获取到对应的Bean。...因此,要在Spring中获取Bean,本质上就是从IoC容器当中获取Bean。 在Spring中,BeanFactory是IoC容器的实际代表者,该接口提供了IoC容器最基本功能。...了解了上述的基本理论知识之后,我们就可以尝试从IoC容器当中获取Bean对象了。 方式一:通过BeanFactory获取 通过BeanFactory来获取Bean。...对象,这种方法也是常见的获取Bean的一种方式,推荐使用。...小结 在本文中介绍了9种从Spring容器中获取Bean的方法,虽然每种方式实现各有不同,但从本质上来讲,无非就是通过BeanFactory或ApplicationContext获取Bean,只不过获取

1.2K50

第2章—装配Bean—通过java代码装配bean

通过java代码装配bean ​ 在进行显式装配的时候,有两种选型方案:java和XML配置,这里先介绍java的配置方式. 2.3.1创建配置类 先复习下上一章的配置内容: @Configuration...的细节,如果单纯的这样运行的话,测试会失败并出现BeanCreation-Exception异常.测试期望被注入CDPlayer和CompactDisc,但是这些bean根本就没有创建,因为组件扫描不会发现他们....为了测试通过就需要加回@ComponentScan的注解. 2.3.2.声明简单的bean 我们要在javaConfig中声明bean,需要在方法上加上@Bean的注解,如下: @Bean...public CompactDisc sgtPeppers(){ return new SgtPeppers(); } 默认情况下,bean的ID与带有@Bean的注解的方法名是一样的...(本例子是sgtPeppers),如果你想设置成一个不同的名字的话,可以重命名为该方法指定bean的Name属性@Bean(name = "otherName")的方式来实现.

20620

Spring 容器中获取 Bean 实例的主要方式

使用BeanFactory直接获取(不推荐) 使用BeanFactory从工厂中直接获取Bean实例,但是XmlBeanFactory类已经废弃,因此不建议使用,测试代码如下: /** * 方式一:XmlBeanFactory...在初始化时保存ApplicationContext对象 可以在初始化的时候保存ApplicationContext对象,然后通过这个对象获取Bean,测试代码如下: /** * 方式二:使用ClassPathXmlApplicationContext...对象,这种方法也是常见的获取Bean的一种方式,测试代码如下: /** *方法六:实现ApplicationContextAware接口获取ApplicationContext */ @Test public...){ return applicationContext.getBean(beanName); } /** * 根据bean的id和类型获取bean对象...测试代码如下: /* * 方法七:使用ContextLoader的getCurrentWebApplicationContext方法获取WebApplicationContext */ @Test

49720

Spring IOC 容器源码分析 - 获取单例 bean

* BeanFactory 并不会在一开始就将所有的单例 bean 实例化好,而是在调用 getBean 获取 * bean 时再实例化,也就是懒加载。...是 FactoryBean 类型,则调用工厂方法获取真正的 bean 实例。...代码很长,需要一点耐心阅读。为了凸显方法的主逻辑,大家可以对代码进行一定的删减,删除一些日志和异常代码,也可以删除一些不是很重要的逻辑。...后续再次获取时,只需直接从缓存里获取即可,无需且不能再次实例化(否则单例就没意义了)。从缓存中取 bean 实例的方法是getSingleton(String),下面我们就来看看这个方法实现方式吧。...看完代码演示,接下来我们来看看源码吧。

61450

Spring实战——通过Java代码装配bean

上篇说的是无需半行xml配置完成bean的自动化注入。这篇仍然不要任何xml配置,通过Java代码也能达到同样的效果。   这么说,是要把上篇的料拿出来再煮一遍?...所以,Spring可以通过显示配置的方式来解决,第一种前面有介绍过,就是通过xml来显示声明bean,第二种就是这里要介绍的基于Java代码方式装配bean。   ...基于注解的自动化注入固然优雅,但是它也有鞭长莫及的时候,这时候就来看看Java代码如何装配bean的。   ...如果你的野心远不止满足于通过Java代码创建一个bean的话,其实你还试试如何在CDPlayer中播放CompactDisc,那就需要在CDPlayer中注入CompactDisc的bean了。...前面通过Java代码注册的Bean有效。 如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!

1.4K50
领券