Spring 学习笔记 一

  
BeanFactory
 
BeanFactory 实际上就是实例化,配置和管理众多bean的容器.这些bean通常会彼此合作,因此他们会产生依赖.例如BeanFactory中的配置数据正好反映了这些依赖关系
 
Org.springframework.beans.factory.BeanFactory 有多个实现.
Org.springframework.beans.factory.xml.XmlBeanFactory 是最长用.
在大多数情况下,BeanFactory管理的用户代码都不需要知道BeanFactory,因为Spring框架代码会做这些事情.但是它还是以某种方式实例化,例如:
       InputStream in = new FileInputStram(“beans.xml”);
       XmlBeanFactory factory = new XmlBeanFactory(in);
或者
       ClassPathResource res = new ClassPathResource(“beans.xml”);
       XmlBeanFactory factory = new XmlBeanFactory(res);
或者
       ClassPathXmlApplicationContext appContext = new ClassPathXmlApplication(new String[]{“application.xml”,”application-part2.xml”});
BeanFactory factory = (BeanFactory)appContext;
 
BeanFactory的配置
              一个最基本的BeanFactory 由一个或多个它所管理的bean定义组成
              在一个XmlBeanFactory中,根节点beans包含一个或多个bean元素.
 
BeanDefinition
       一个XmlBeanFacroty包含的bean定义有
              classname:bean真正的实现类,但是如果一个bean用一个静态工厂方法所创建,而不是用普通的构造方法创建的,这个classname就是工厂类的classname;
              bean 的行为配置元素 : 它声明bean在容器中的行为(prototype or singleton,自动装配模式,依赖检查模式,初始化和析构方法);
              构造函数的参数和新创建bean 需要的属性:例如一个管理连接池bean的连接数目,或者池大小的限制;
              和这个bean 相关的其他bean: 比如它们的合作者(同样可以作为属性或者是构造函数的参数)这个也叫做依赖
 
       Bean的类 class属性通常是强制性,有两种方法
       第一种是: BeanFactory 直接调用bean的构造方法来”new”一个bean,class属性指定需要创建bean的类.(这种方法比较长用).
当使用构造函数创建bean时,所有的普通类都可以被Spring使用并且和Spring兼容这就时说被创建的类不需要实现任何特定的接口或着按照特定的样式来写,在这里只需要指定bean的类就行了.注意,要根据bean使用的Ioc类型时,需要一个空的构造方法
另外,BeanFactory并不局限于管理真正的JavaBean,它也能管理任何你想让它管理的类. 使用XmlBeanFactory定义bean的class
<bean id =”exampleBean” class=”examples.ExampleBean”/>
<bean id =”anotherExample” class = “examples.ExampleBeanTow”/>
 
       第二种方法是:BeanFactory调用某个静态工厂方法来创建bean,class属性指定实际包含静态工厂方法的那个类.
       通过静态工厂方法创建bean----使用class属性指定包含静态方法的类, facroty-method属性指定工厂方法名. Spring调用这个方法时并返回一个有效对象,之后这个对象就完全和构造方法创建的对象一样了.
<beanid=”exampleBean”class=”examples.ExampleBean2”factory-method=”createInstance”/>
声明这个bean要通过factory-method指定的方法来创建.注意这个bean定义并没有指定返回值类型,只包含工厂方法的类.createInstance必须时static方法.
       通过实例工厂方法长剑bean-----调用已经存在的bean的工厂方法来创建新的bean
<!—The factory bean ,which contains a method called createInstance -- >
<bean id=”myFactoryBean” class=””>
       …
</bean>
<!— the bean to be create via the factory bean-- >
<bean id =”” factory-bean=”myFactoryBean” factory-method=”createInstasnce”/>
使用这种机制class必须置为空,factory-bean必须指定一个bean的名字,这个bean一定要在当前bean工厂中或在父bean工厂中.并包含工厂方法,而工厂方法仍要通过factory-method属性来设定
Bean 的标志符 id
       每一个bean都一个或多个id,这些id是用来管理BeanFactory和ApplicationContext的唯一性,假如某个bean的超过一个,那么另外的可以认为是bean的别名.他们之间用逗号(,)或者分号(;)隔开.
Singleton 的使用
       Beans被定义为Singleton或non-Singleton(prototype)的一种
       如果beans被定义为Singleton,那么就只有一个共享实例存在,所有和这个bean定义id符合的bean的请求都会返回这个特定的、唯一的实例。
       Beans默认被指定为Singleton,除非你指定为non-Singleton,此时每个bean的请求都会返回一个新的bean,所以只有在绝对需要的时候才指定为non-Singleton.
<bean id=”exampleBean” class=”examples.ExampleBean” singleton=”false”/>
<bean id=”anotherBean” class=”examples.ExampleBean” singleton=”true”/>
exampleBean被定义为non-Singleton,客户段每次向BeanFactroy发送请求是都会新创建Bean。
anotherBean被定义为singleton,anoherBean只会被创建一次,每次请求都会返回这个实例的引用
注意:当部署Bean为prototype时,这个bean的生命周期会有些改变。通过定义Spring无法管理non-singleton/prototyoe bean的整个生命周期,因为在创建它之后,容器就会把它交给客户端来管理,容器本身不用在跟踪。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值