zoukankan      html  css  js  c++  java
  • Ⅴ.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为静态属性)、获取字段、静态方法返回、实例方法返回

  • 相关阅读:
    Hihocoder 1275 扫地机器人 计算几何
    CodeForces 771C Bear and Tree Jumps 树形DP
    CodeForces 778D Parquet Re-laying 构造
    CodeForces 785E Anton and Permutation 分块
    CodeForces 785D Anton and School
    CodeForces 785C Anton and Fairy Tale 二分
    Hexo Next 接入 google AdSense 广告
    如何统计 Hexo 网站的访问地区和IP
    Design and Implementation of Global Path Planning System for Unmanned Surface Vehicle among Multiple Task Points
    通过ODBC接口访问人大金仓数据库
  • 原文地址:https://www.cnblogs.com/cnlj/p/3465450.html
Copyright © 2011-2022 走看看