分享Java快乐

我有一份快乐,分给你一些;我还是有一份快乐,你也有一份快乐。

mxj ID:javamxj
517724次访问,排名75好友0人,关注者5
javamxj的文章
原创 82 篇
翻译 0 篇
转载 0 篇
评论 720 篇
javamxj的公告

    版权声明:在此发表的有关文章均属本人javamxj原创,转摘或引用请注明出处。



联系方式:
Email:
javamxj@gmail.com

友情Blog

最近评论
linuxghs:删除configuration,eclipse不能启动了。郁闷
xinghui100:学习中
IvonXiao:谢谢博主的分享
xkpkhu:wow power leveling
xkpkhu:wow power leveling
文章分类
收藏
    相册
    有空逛逛
    java开源大全(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 快速上手Spring--7. ref的用法收藏

    新一篇: 快速上手Spring--8. 集合对象注入 | 旧一篇: 快速上手Spring--6. Singleton的使用与否

    这篇文章来谈谈《Spring Framework 开发参考手册》的3.3.2小节中的ref的用法。
     
      ref元素是用在property中,来设置需要引用的容器管理的其它Bean。
     
      它的用法:<ref bean|local|parent="someBean">,这里主要分析一下这三个参数的作用。
     
      这次先看实例,再进行讲解。
     
    · 先建立一个包:javamxj.spring.basic.ref ,然后把以下5个文件放在这个包下。
    HelloBean.java
    package javamxj.spring.basic.ref;

    public class HelloBean {
        private String hello;

        public String getHello() {
            return hello;
        }

        public void setHello(String hello) {
            this.hello = hello;
        }
    }
     
     
    HelloDate.java
    package javamxj.spring.basic.ref;

    import java.util.Date;

    public class HelloDate {
        private Date date;

        private HelloBean hb;

        public void setDate(Date date) {
            this.date = date;
        }

        public void setHb(HelloBean hb) {
            this.hb = hb;
        }

        public void sayHello() {
            System.out.println(hb.getHello() + "  " + date.toLocaleString());
        }

    }
     

    beans.xml

    <?xml version="1.0" encoding="GBK"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
       
        <bean id="helloBean" class="javamxj.spring.basic.ref.HelloBean">
            <property name="hello" value="Hello! Child Bean." />
        </bean>
       
        <bean id="dateBean" name="#date" class="java.util.Date"/>
       
        <bean id="hd1" class="javamxj.spring.basic.ref.HelloDate">
            <property name="hb">
                <ref bean="helloBeanParent"/>
            </property>
            <property name="date">
                <ref bean="#date"/>
                <!--<ref bean="dateBean"/>-->
            </property>
        </bean>
       
        <bean id="hd2" class="javamxj.spring.basic.ref.HelloDate">
            <property name="hb">
                <ref local="helloBean"/>
            </property>
            <property name="date">
                <ref local="dateBean"/>
            </property>
        </bean>
       
        <bean id="hd3" class="javamxj.spring.basic.ref.HelloDate">
            <property name="hb">
                <ref parent="helloBean"/>
            </property>
            <property name="date">
                <bean class="java.util.Date"/>
            </property>
        </bean>
       
    </beans>
     
    parent.xml
    <?xml version="1.0" encoding="GBK"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
       
        <bean id="helloBean" class="javamxj.spring.basic.ref.HelloBean">
            <property name="hello" value="Hello! Javamxj." />
        </bean>
       
        <bean id="helloBeanParent" class="javamxj.spring.basic.ref.HelloBean">
            <property name="hello" value="Hello! Parent Bean." />
        </bean>
       
    </beans>
     
    Main.java
    package javamxj.spring.basic.ref;

    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.xml.XmlBeanFactory;
    import org.springframework.core.io.ClassPathResource;

    public class Main {

        public static void main(String[] args) {
            BeanFactory parent = new XmlBeanFactory(new ClassPathResource(
                    "javamxj/spring/basic/ref/parent.xml"));
            BeanFactory child = new XmlBeanFactory(new ClassPathResource(
                    "javamxj/spring/basic/ref/beans.xml"), parent);

            HelloDate hd1 = (HelloDate) child.getBean("hd1");
            HelloDate hd2 = (HelloDate) child.getBean("hd2");
            HelloDate hd3 = (HelloDate) child.getBean("hd3");

            hd1.sayHello();
            hd2.sayHello();
            hd3.sayHello();
        }
    }
     
     
    ·运行Main.java,输出结果如下:
     
    Hello! Parent Bean.  2005-8-10 22:25:56
    Hello! Child Bean.  2005-8-10 22:25:56
    Hello! Javamxj.  2005-8-10 22:25:56
     
     
       OK!这里主要分析beans.xml、Main.java这两个文件。对于Main.java要注意的是如何加载“parent”的,重点看看beans.xml中ref元素的用法。
     
      首先定义两个bean:helloBean、dateBean,分别指向HelloBean类和Date类。然后定义了hd1、hd2、hd3等三个bean,都指向HelloDate类。
     
    ·hd1:
      property标签中的“helloBeanParent”并不存在于beans.xml中,而是在parent.xml中,使用<ref bean="someBean">可以从其它bean配置文件中寻找需要加载的目标bean。bean属性的值可以同目标bean的id属性相同,也可以同它的name属性中任意的一个值相同。
     
    ·hd2:
       property标签中的“helloBean”如果不存在于beans.xml中,则XML解析器会提示错误。<ref local="someBean">只能这个bean配置文件中寻找需要加载的目标bean,而且local属性值必须同目标bean的id属性相同。
     
    ·hd3:
       property标签中的“helloBean”同时存在于beans.xml和parent.xml中,使用<ref bean="someBean">则会优先从beans.xml中寻找需要加载的目标bean,如果需要从parent.xml中加载目标bean,则需使用<ref parent="someBean">。在设置date时,使用的是内联bean,这时可以不要任何id或name定义。
     
     
      好了,就说这么多了。
     
      这篇文章源代码下载(不包含库文件):http://free.ys168.com/?javamxj  Spring目录下面的SpringBasic.zip。

    发表于 @ 2005年08月11日 20:22:00|评论(loading...)|编辑

    新一篇: 快速上手Spring--8. 集合对象注入 | 旧一篇: 快速上手Spring--6. Singleton的使用与否

    评论

    #小蚂蚁 发表于2005-08-12 08:13:00  IP: 61.186.252.*
    Javamxj大哥,你写的太棒了,我顶!
    希望以后多些这样的好东东啊
    #jelver 发表于2006-01-07 10:15:00  IP: 222.52.143.*
    好东西,老大,怎么不继续了,呢
    #jelver 发表于2006-01-07 10:21:00  IP: 222.52.143.*
    好东西,老大,怎么不继续了,呢
    #moontoucher 发表于2006-01-16 14:27:00  IP: 218.68.240.*
    佩服仁兄。继续努力
    #顽童 发表于2006-03-19 14:04:00  IP: 221.0.95.*
    太好了,尤其是对初学者,简直是绝无仅有的好教程呀
    #allen 发表于2006-04-07 09:44:00  IP: 222.92.109.*
    精辟。一个字:强
    #happy2000 发表于2006-08-01 16:50:00  IP: 60.209.248.*
    你写的太好了.能否和你做个朋友好吗?我的QQ:122198003.看你的文章对我这类初学者绝对是极其难得的好资料.
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © javamxj