spring学习笔记(3)Bean命名、定义与配置

基于xml的配置

基础配置

<bean id="id" name="name" class="full_name">
  <property name="pname" value="pvalue" lazy-init="defalut/true/false" scope="singleton/prototype/request/session" />
</bean>
  1. class为bean的全限定名,指向classpath下类定义所在位置
  2. id为bean的唯一名称标识,在整个IOC容器中必须是唯一的。它必须以字母开头,后面可以是数字、连字符、下划线、句号、冒号等符号。
  3. name也是bean的名称标识,但它可在多个bean命名中重复,几乎可以使用任何符号如问号或以数字开头等。
    以下是几点需要注意的:

    1. id和name都可以指定多个名字,名字之间可用逗号、分号、或者空格间隔
    2. 如果配置了多个name相同的bean,通过getBean方法获取Bean时,将返回最后声明的那个Bean(前面的被后面覆盖)
    3. 如果id和name属性都未指定,用户可通过getBean(“full_name”),即通过class值来获取,如果定义了多个类相同的匿名Bean,如:
      <bean class="full_name1">
      <bean class="full_name1">
      <bean class="full_name1">

    则可通过getBean(“full_name1”)获取第一个,getBean(“full_name1#1”)获取第二个,以此类推。

  4. Bean的每一个属性对应一个property标签,name为属性名,value为注入时为属性构造的数值

  5. lazy-int指明bean的初始化时机
  6. scope:bean的作用域(后面两种在web应用环境下呈现。
    1. singleton:整个IOC容器共享一个Bean
    2. prototype:每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例.
    3. request:每次HTTP请求将会生成各自的bean实例
    4. session:每次会话请求对应一个bean实例

拓展配置

1. 引用外部Bean

<bean id="idCard" class="test.IdCard"></bean>
   <bean id="user" class="test.User" >
       <property name="idCard" ref="idCard" />
   </bean>

在这里以对象组合的方式将idCard定义为了user中的一个属性。上面代码使用了简化形式配置,<property name="idCard" ref="idCard" />相当于

    <property name="idCard">
        <ref bean="idCard"/>
    </property>

在标签中,除了bean属性,还有local、parent等,它们定义了引用Bean的可见域:
1. bean:可以引用同一容器或父容器中定义的Bean
2. local:只能引用同一配置文件中的Bean
3. parent:只能引用父容器的Bean

关于父子容器(上下文)的有关定义:
1. 父子容器可以通过ConfigurableApplicationContext或ConfigurableBeanFactory来实现,这两个接口中分别有setParent及setParentBeanFactory方法,可以与当前的子容器进行父子容器关联。也可以在动态加载资源文件时设定,如方法:ClassPathXmlApplicationContext(String configLocation,ApplicationContext parent)
2. 子容器可以访问父容器中的Bean,但父容器不能访问子容器的Bean。在容器内,Bean的id必须是唯一的,但子容器可以拥有一个和父容器id相同的Bean。父子容器层级体系增强了Spring容器架构的扩展性和灵活性,因为第三方可以通过编程的方式,为一个已经存在的容器添加一个或多个特殊用途的子容器,以提供一些额外的功能

2. 内部Bean

在Bean1内部定义一个Bean2,Bean2仅能被Bean1调用,其他Bean不可见,形式如:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值