spring配置和管理bean的方式简历概述
来源:互联网 发布:mac代表哪个国家 编辑:程序博客网 时间:2024/05/18 01:29
1. 写在前面
Spring框架对bean的管理,是通过2个容器管理的即BeanFactory和ApplicationContext。而ApplicationContext其实是BeanFactory的子接口,内容进行了扩展。即然称其为容器则说明它是管理整个框架里的bean的,负责bean的生命周期。
2. 第一种方式。也是框架里常用的方式,实现FactoryBean接口。
我觉得该类更像是对Bean的代理。Spring容器getBean(id)时见到bean的定义是普通class时,就会构造该class的实例来获得bean,而如果发现是FacotryBean接口的实例时,就通过调用它的getObject()函数来获得bean。如果要获取FactoryBean对象,可以在id前面加一个&符号来获取。作用其实是类的代理。
比如:
public class Test implements FactoryBean<SysCatRo> {@Overridepublic SysCatRo getObject() throws Exception {return new SysCatRo();}@Overridepublic Class<?> getObjectType() {return SysCatRo.class;}@Overridepublic boolean isSingleton() {return false;}}
ps: SysCatRo是个数据结构体
在getBean(id)时返回的是SysCatRo实例。
3工厂方式:
第二种:静态工厂
对象的创建由静态工厂里的静态类提供,我相信很多同学都用过。我们这里简单举个spring里配置静态工厂方式,比如有个TestStaticFacotry类里有个getTest()静态方法
/** * 静态工厂方法 * @param name * @return */ public static SysCatRo getTest(String name) { return new SysCatRo(name); }
那么要applicationContext.xml里可如下配置:
<bean id="test1" class="TestStaticFacotry" factory-method="getTest"> <constructor-arg value="audi"></constructor-arg></bean>
那么在程序里可用test1创建很多bean.
第三种:实例工厂方法
比如有个TestFacotry类里有个getTest()方法
/** * 工厂方法 * @param name * @return */ public SysCatRo getTest(String name) { return new SysCatRo(name); }
那么在applicationContext.xml里可如下配置:
<!-- 配置工厂的实例 需要创建工厂本身,在调用工厂的实例方法来返回bean的实例-->
<bean id="testFacotry"class="TestFacotry"></bean>
<!-- factory-bean:指向实例工厂方法的bean
factory-method:指向实例工厂方法的名字
constructor-arg:如果实例工厂方法需要传入参数,则使用constructor-arg来配置参数
-->
<!-- 通过实例工厂方法来配置bean -->
<bean id="test2" factory-bean="testFacotry"factory-method="getTest">
<constructor-arg value="ford"></constructor-arg>
</bean>
- spring配置和管理bean的方式简历概述
- spring中配置Bean的xml方式和注解方式
- spring的bean管理方式(xml)
- Spring的bean管理(注解方式)
- spring三种实例化Bean的方式和管理Bean的作用域和Bean的生命周期
- spring的bean管理之bean实例化三种方式
- spring中bean配置的常用方式
- spring配置bean的几种方式
- Spring 注解方式管理Bean
- Spring容器和被管理的Bean
- Spring容器和被管理的Bean
- 详细介绍采用Spring管理Bean和依赖注入方式
- JavaEE Spring框架学习笔记(理论学习之通过注解的方式定义和管理Bean)
- spring创建单例bean和非单例bean的方式
- Spring容器中init Bean和destroy Bean的方式
- Spring Bean装配--常用的注入方式和自动装配的配置和实现
- spring--xml配置方式,bean实例化的方式
- spring 注解方式配置Bean
- JDK中ArrayList和Vector区别
- DNS部署文档
- 树
- AutoCAD自动装载动态库,并从菜单上执行其方法
- 您不能错过的 Safari 10.0 新特性
- spring配置和管理bean的方式简历概述
- CorelDRAW文本溢出如何解决
- log4j.properties
- SPOJ NDIV
- Git的安装和使用(1)
- git命令行
- 【Python】datetime间的比较
- three.js 网格 GridHelper
- Linux命令收集