• Ⅴ.spring的点点滴滴--引用其他对象或类型的成员


    承接上文

    引用其他对象或类型的成员


    .net篇(环境为vs2012+Spring.Core.dll v1.31

    public class Person {
        public string Name { get; set; }
        public static int Age { get; set; }
        public string sex;
        public static int Add(int x, int y){
            return x + y;
        }
        public int Add(int x, int y,int z){
            return x + y+z;
        }
    }
       <object id="person" type="SpringBase.Person,SpringBase">
        <property name="Name" value="cnljli" />
        <property name="Age" value="1"/>
        <property name="sex" value="0"/>
      </object>
      <object id="theName"
            type="Spring.Objects.Factory.Config.PropertyRetrievingFactoryObject, Spring.Core">
        <property name="TargetObject" ref="person"/>
        <property name="TargetProperty" value="Name"/>
      </object>
      <object id="theAge"
            type="Spring.Objects.Factory.Config.PropertyRetrievingFactoryObject, Spring.Core">
        <property name="StaticProperty" value="SpringBase.Person.Age"/>
      </object>
      <object id="thesex"
         type="Spring.Objects.Factory.Config.FieldRetrievingFactoryObject, Spring.Core">
        <property name="TargetObject" ref="person"/>
        <property name="TargetField" value="sex"/>
      </object>
      <object id="theadd1"
        type="Spring.Objects.Factory.Config.MethodInvokingFactoryObject, Spring.Core">
        <property name="TargetType"  value="SpringBase.Person,SpringBase"/>
        <property name="TargetMethod" value="Add"/>
        <property name="Arguments">
          <list>
            <value>1</value>
            <value>2</value>
          </list>
        </property>
      </object>
      <object id="theadd2"
        type="Spring.Objects.Factory.Config.MethodInvokingFactoryObject, Spring.Core">
        <property name="TargetObject"  ref="person"/>
        <property name="TargetMethod" value="Add"/>
        <property name="NamedArguments">
          <dictionary>
            <entry key="x" value="1" />
            <entry key="y" value="2" />
            <entry key="z" value="3" />
          </dictionary>
        </property>
      </object>
    1. StaticProperty的值必须填完整
    2. Arguments的值的时候是从上往下匹配,NamedArguments是通过键值对匹配

    java篇(环境为Maven+Jdk1.7+IntelliJ IDEA 12.1.4

    package springdemo;
    public class factoryObject {
        private String name;
        public static Integer age;
        public String sex;
        public static int Add(int x, int y) {
            return x + y;
        }
        public static Integer getAge() {
            return age;
        }
        public static void setAge(Integer age) {
            factoryObject.age = age;
        }
        public int Add(int x, int y, int z) {
            return x + y + z;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
    }
        <bean id="person" class="springdemo.factoryObject">
            <property name="name" value="cnljli"/>
            <property name="age" value="1"/>
            <property name="sex" value="0"/>
        </bean>
        <bean id="theName"
              class="org.springframework.beans.factory.config.PropertyPathFactoryBean">
            <property name="targetBeanName" value="person"/>
            <property name="propertyPath" value="name"/>
        </bean>
        <bean id="theAge"
              class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
            <property name="staticField" value="springdemo.factoryObject.age"/>
        </bean>
        <bean id="thesex"
              class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
            <property name="TargetObject" ref="person"/>
            <property name="targetField" value="sex"/>
        </bean>
        <bean id="theadd1"
              class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="targetClass" value="springdemo.factoryObject"/>
            <property name="targetMethod" value="Add"/>
            <property name="arguments">
                <list>
                    <value>1</value>
                    <value>2</value>
                </list>
            </property>
        </bean>
        <bean id="theadd2"
              class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="targetObject" ref="person"/>
            <property name="targetMethod" value="Add"/>
            <property name="arguments">
                <list>
                    <value>1</value>
                    <value>2</value>
                    <value>3</value>
                </list>
            </property>
        </bean>
    1. 字段必须有get和set的方法

    javaCsharp的共同点

    1. theadd1是静态方法,theadd2为实例方法
    2. 就是标签的name几乎一样
    3. 分别的效果是获取属性、静态字段(csharp为静态属性)、获取字段、静态方法返回、实例方法返回

  • 相关阅读:
    mapreduce 的过程
    bootstrap当中,实现一些常用的元素居中
    如何理解人工智能、机器学习和深度学习三者的关系
    MapReduce的局限性
    MapReduce的计算资源划分
    Java中的堆和栈的区别
    java面试01-网络知识
    01Java经典问题
    06数据库复习03
    05数据库复习02
  • 原文地址:https://www.cnblogs.com/cnlj/p/3465450.html
Copyright © 2020-2023  润新知