spring PropertyPathFactoryBean | 获取另一个Bean的某个属性值

一般来说,spring中的Dependency来自于另一个Bean,但是也有一些情况我们需要另一个Bean的某个属性,此时可以使用PropertyPathFactoryBean;

eg:

继续次的Dog类:

package fuckSpring.propertyEditor;

public class Dog {
    private String name;
    private String type;
    private int age;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    public String toString(){
        return this.name+this.type+this.age;
    }
}

再来个Person类:

package fuckSpring.propertyEditor;

public class Person {
    private String name;
    private String hisDogName;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getHisDogName() {
        return hisDogName;
    }
    public void setHisDogName(String hisDogName) {
        this.hisDogName = hisDogName;
    }

}

然后是我们的测试类,MyTest.java

package fuckSpring.propertyEditor;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    private Person p;

    public Person getP() {
        return p;
    }

    public void setP(Person p) {
        this.p = p;
    }

    public static void main(String[] args){
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        MyTest mt=(MyTest) ac.getBean("myTest");
        String hisDog=mt.p.getHisDogName();
        System.out.println(hisDog);

    }

}

最后是我们的applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [
<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">
]>

<beans>

    <bean id="dog" class="fuckSpring.propertyEditor.Dog">
        <property name="name" value="二狗子">
        </property>
        <property name="type" value="二ha">
        </property>
        <property name="age" value="110">
        </property>
    </bean>

    <!-- 这里spring把dog的名字设置成一个Bean,用于被下面的Person获取 -->
    <bean id="dogName" class="org.springframework.beans.factory.config.PropertyPathFactoryBean">
        <property name="targetObject">
            <ref local="dog"/>
        </property>

        <property name="propertyPath">
            <value>name</value>
        </property>

    </bean>

    <bean id="person" class="fuckSpring.propertyEditor.Person">
        <property name="hisDogName">
            <ref local="dogName" />
        </property>

        <property name="name">
            <value>tom</value>
        </property>
    </bean>

    <bean id="myTest" class="fuckSpring.propertyEditor.MyTest">
        <property name="p">
            <ref local="person"/>
        </property>
    </bean>
</beans>

然后运行MyTest.java,,,BingGO!成功~

时间: 2024-10-14 06:03:34

spring PropertyPathFactoryBean | 获取另一个Bean的某个属性值的相关文章

js如何获取另一个页面传递过来的值?

var t="<%=request.getParameter("do")%>"; alert(t); js如何获取另一个页面传递过来的值?

获取一个类指定的属性值

/// <summary> /// 获取一个类指定的属性值 /// </summary> /// <param name="info">object对象</param> /// <param name="field">属性名称</param> /// <returns></returns> public static object GetPropertyValue(obj

java 中利用反射机制获取和设置实体类的属性值

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. JAVA反射(放射)机制:"程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言".从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言.但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可

更改一个页面对象的属性值

#!usr/bin/env python #-*- coding:utf-8 -*- """ @author: sleeping_cat @Contact : [email protected] """ #更改一个页面对象的属性值 from selenium import webdriver import unittest def addAtttribute(driver,elementObj,attributeName,value): #封装向

java正则表达式获取指定HTML标签的指定属性值

package com.mmq.regex; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @use 获取指定HTML标签的指定属性的值 * @FullName com.mmq.regex.MatchHtmlElementAttrValue.java </br> * @JDK 1.6.0 </b

Spring Boot - 获取所有的Bean信息

前言 Spring Boot启动的时候需要加载许多Bean实现最小化配置,本文将尝试找出Spring启动后加载的所有Bean信息: 通过ApplicationContext 去获取所有的Bean 通过CommandLineRunner接口,可以实现在Spring Boot完全启动后执行一些代码逻辑,本文将执行的逻辑是打印所有Bean的信息: 1) 通过 ApplicationContext.getBeanDefinitionNames() 方法获取所有Bean的名称: 2) 通过 Applica

Spring IoC 在子类中为父类注入属性值

1.基类 package com.grgbanking.it.base; import com.grgbanking.it.wx.common.creator.WXBaseMessageCreator; import com.grgbanking.it.wx.entity.WXPassiveMessage; import com.grgbanking.it.wx.entity.WXVerify; public class WXConnectionService implements IWXCon

获取seleect下选中option的属性值

<!DOCTYPE html> <html> <head> <title></title> <script src="https://cdn.bootcss.com/vue/2.3.3/vue.min.js"></script> </head> <body> <div id="app"> <select v-model="value

获取json串里的某个属性值

string jsonText = "{\"beijing\":{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}}";JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);string zone = jo["beijing"]["zone"].T