zoukankan      html  css  js  c++  java
  • Spring容器中的Bean

    一,配置合作者的Bean

    Bean设置的属性值是容器中的另一个Bean实力,使用<ref.../>元素,可制定一个bean属性,该属性用于指定容器中其他Bean实例的id属性

    1 <bean id="steelAxe" class="org.com.service.impl.SteelAxe"></bean>
    2      <bean id="chinese" class="org.com.service.impl.Chinese">
    3      <property name="axe">
    4      <!-- 指定使用个容器中的id为steelAxe的Bean作为调用setAxe()方法的参数 -->
    5      <ref bean="steelAxe"/>
    6      </property>
    7      </bean>
    View Code

    也可以简写成

    1 <bean id="steelAxe" class="org.com.service.impl.SteelAxe"></bean>
    2      <bean id="chinese" class="org.com.service.impl.Chinese">
    3      <!-- 指定使用个容器中的id为steelAxe的Bean作为调用setAxe()方法的参数 -->
    4      <property name="axe" ref="steelAxe"/>
    5      </bean>
    View Code

    二,使用自动装配注入合作者的Bean

    1,自动装配可以通<beans.../>的default-autowire指定,该元素对所有的<bean.../>起作用

    2,也可以通过<bean>的autowire指定

    default-autowire,autowire可接受如下属性值

    no:默认此

    byName

    1  <!-- 指定使用byName,根据setter的方法名与Bean的id进行匹配 -->
    2      <bean id="chinese" class="org.com.service.impl.Chinese" autowire="byName">
    3       </bean>
    4       <bean id="gunDog" class="org.com.service.impl.GunDog">
    5       <property name="name" value="wanggang"></property>
    6       </bean>
    View Code

    setter方法名为setGunDog(),spring容器会找id为gunDog的Bean,若找到了,该Bean就会调用setGunDog方法的参数

    1     public void setGunDog(Dog dog){
    2             this.dog=dog;
    3         }
    4     
    View Code

    byType:根据参数类型,进行匹配,不多做例子,估计用不到

    三,注入集合值

    使用集合元素标签<list../><set../><map../><props../>

     1 <?xml version="1.0" encoding="UTF-8"?>  
     2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     3     xmlns="http://www.springframework.org/schema/beans"  
     4     xsi:schemaLocation="http://www.springframework.org/schema/beans  
     5     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">  
     6     <!-- 资源国际化 -->  
     7      <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
     8      <!-- 驱动spring调用messageSource Bean的setBasenames()的方法,改方法需要一个参数组 -->
     9      <property name="basenames">
    10      <list>
    11      <value>message</value>
    12      <!-- 如果有多个资源文件,全部列在这儿 -->
    13      </list>
    14      </property>     
    15      </bean>
    16      <bean id="steelAxe" class="org.com.service.impl.SteelAxe"></bean>
    17      <bean id="chinese" class="org.com.service.impl.Chinese">
    18      <property name="axe">
    19      <!-- 指定使用个容器中的id为steelAxe的Bean作为调用setAxe()方法的参数 -->
    20      <ref bean="steelAxe"/>
    21      </property>
    22      </bean>
    23      
    24      <bean id="steelAxe" class="org.com.service.impl.SteelAxe"></bean>
    25      <bean id="chinese" class="org.com.service.impl.Chinese">
    26      <!-- 指定使用个容器中的id为steelAxe的Bean作为调用setAxe()方法的参数 -->
    27      <property name="axe" ref="steelAxe"/>
    28      </bean>
    29      
    30      <!-- 指定使用byName,根据setter的方法名与Bean的id进行匹配 -->
    31      <bean id="chinese" class="org.com.service.impl.Chinese" autowire="byName">
    32       </bean>
    33       <bean id="gunDog" class="org.com.service.impl.GunDog">
    34       <property name="name" value="wanggang"></property>
    35       </bean>
    36       
    37       <bean id="chinese" class="org.com.service.impl.Chinese">
    38       <!-- 为调用setSchools()方法配置List集合作为参数值 和数组一样 -->
    39       <property name="schools">
    40       <list>
    41       <!-- 每个value,ref,bean..都配置一个List元素 -->
    42       <value>小学</value>
    43       <value>中学</value>
    44       <value>大学</value>
    45       </list>
    46       </property>
    47       <property name="scores">
    48       <!-- 为调用setScores()方法配置Map集合作为参数值 -->
    49       <map>
    50       <entry key="语文" value="80"/>
    51       <entry key="数学" value="80"/>
    52       <entry key="外语" value="80"/>
    53       </map>
    54       </property>
    55       </bean>
    56 </beans> 
    View Code

    四,组合属性
    除了最后一个属性可以为NULL,其他都不行

    <bean id="" class="">

    <property name="person.name" value="zhangliang"/>相当于执行getPerson().setName(String name);

    </bean>

  • 相关阅读:
    图片验证码, 登录, 注销, 修改密码
    注册页面及注册功能实现
    高级配置文件, csrf, django settings源码, django auth模块, 文件配置的插拔式设计
    cookie操作, session操作, django中间件
    半自动创建多对多关系表, forms组件
    sweetalert, bulk_create, 分页器
    orm查询优化, MVC与MTV, choices参数, ajax
    聚合查询, 分组查询, F与Q查询, 常见字段及参数, 自定义Char字段, 事务操作
    Contest2058
    ACM版《孔乙己》
  • 原文地址:https://www.cnblogs.com/tingbogiu/p/4704499.html
Copyright © 2011-2022 走看看