【Spring】简述@Configuration配置类注册BeanDefinition到Spring容...
其中base-package为需要扫描的包(含子包)。1 context:component-scan base-package=cn.test/ Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
javadoc是不包括注解的.value() , name() :互为别名,为bean起一个名字,可以通过名字从spring容器中拿到bean对象。如果不设置,默认为@Bean修饰的方法名。
我们点进 @EnableTransactionManagement 注解中,发现了这个 @Import(TransactionManagementConfigurationSelector.class),它的作用就是将类导入,类会被注册进 IOC 容器中。
自动装配的原理 网上已经有很多的讲解了,这里不再冗余了。ProviderConfigration Configuration注解在类上表示此类为自动装配类。
它的作用是在处理 @Configuration 时,注册额外的 bean definition。开启 Spring 应用上下文的自动配置功能,它试图猜测你可能需要配置的 bean 信息。表示包含该注解的类所在的包应该在 AutoConfigurationPackages 中注册。
吃透spring中的getBean
强力建议先看 吃透Spring的循环依赖 把这个函数的作用就理解了。
简单地说,正如方法的名称所表达的, getBean() 负责从Spring IOC容器中获取bean实例。首先,让我们定义一些用于测试的Spring bean。
getBean是用来获取applicationContext.xml文件里bean的,()写的是bean的id。
spring如何创建bean?不说是通过反射吗???
1、这个过程从根本上是反,因此得名“控制反转(IoC),控制实例化 bean 本身或者它的位置依赖关系通过使用直接建设类,或者一个Service Locator模式等机制。
2、Bean相关包为:org.springframework.beans和org.springframework.context spring的Bean管理的实现是依靠大量的反射来实现的。
3、这个方法的作用就是根据你返回的类全限定名(org.springframework.context.annotation.AutoProxyRegistrar)数组来创建 Bean 。实现了 ImportSelector 的类也是需要使用 @Import 导入。
4、首先读取applicationContext.xml,解析文档,文档有你需要beans,然后根据这个配置文档,通过反射机制实例化beans,然后你getbean(“beanName”);就能获取了,看看spring实现源码。