Java技术专题

Spring表达式和自动装配

2018-10-07  本文已影响5人  爱撒谎的男孩

Spring表达式和自动装配

【重要】spring表达式

作用

前提

实现

public class Message {
    private String name;
    private List<String> cities;   //城市 。List集合
    private Set<String> friend;   //Set集合
    private Map<Integer,String> bookes;  //Map集合
    private Properties properties;   //Properties集合
    private String[] names;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String[] getNames() {
        return names;
    }
    public void setNames(String[] names) {
        this.names = names;
    }
    public List<String> getCities() {
        return cities;
    }
    public void setCities(List<String> cities) {
        this.cities = cities;
    }
    public Set<String> getFriend() {
        return friend;
    }
    public void setFriend(Set<String> friend) {
        this.friend = friend;
    }
    public Map<Integer, String> getBookes() {
        return bookes;
    }
    public void setBookes(Map<Integer, String> bookes) {
        this.bookes = bookes;
    }
    public Properties getProperties() {
        return properties;
    }
    public void setProperties(Properties properties) {
        this.properties = properties;
    }
}
public class ValueBean {
    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

}

获取不是集合类型的值

    <util:list id="cities">
        <value>徐州</value>
        <value>无锡</value>
        <value>常州</value>
    </util:list>

    <util:set id="friends">
        <value>Jack</value>
        <value>Tom</value>
        <value>陈加兵</value>
    </util:set>


    <util:map id="bookes">
        <entry key="1001" value="java编程基础"></entry>
        <entry key="1002" value="java编程思想"></entry>
    </util:map>

    <!-- 引入外部的Properties文件,location指定的就是位置 -->
    <util:properties id="properties" location="classpath:jdbc.properties"></util:properties>

    <bean id="message" class="cn.tedu.spring.beans.Message">
        <property name="name" value="陈加兵"></property>
        <!-- List集合的注入 ref指定的上面定义的List的id -->
        <property name="cities" ref="cities"></property>

        <!-- Set集合的注入 -->
        <property name="friend" ref="friends"></property>

        <!-- Map集合的注入 -->
        <property name="bookes" ref="bookes"></property>

        <!-- properties的集合的注入 -->
        <property name="properties" ref="properties"></property>

        <!-- 为数组赋值 -->
        <property name="names">
            <array>
                <value>Alex</value>
                <value>Billy</value>
            </array>
        </property>
    </bean>

    <!-- 配置ValueBean -->
    <bean id="valueBean" class="cn.tedu.spring.beans.ValueBean">
        <!-- value的值是使用spring表达式获取的,形式为:#{前面定义好的id.属性名} -->
        <property name="username" value="#{message.name}"></property>
    </bean>

引用数组集合或者List的值

    <!-- 配置ValueBean -->
    <bean id="valueBean" class="cn.tedu.spring.beans.ValueBean">
        <!-- value的值是使用spring表达式获取的,形式为:#{前面定义好的id.属性名} -->
        <property name="username" value="#{message.names[0]}"></property>
    </bean>

ValueBean的name属性设置为Person中的Address对象的city值

<!-- 创建一个Address的实例 -->
    <bean id="address" class="cn.tedu.spring.beans.Address">
        <property name="city" value="无锡"></property>
        <property name="pro" value="江苏"></property>
    </bean>

    <bean id="person" class="cn.tedu.spring.beans.Person">
        <property name="name" value="陈加兵"></property>
        <property name="age" value="22"></property>
        <!-- 引用上面address -->
        <property name="address" ref="address"></property>
    </bean>

    <!-- 配置ValueBean -->
    <bean id="valueBean" class="cn.tedu.spring.beans.ValueBean">
        <!-- value的值是使用spring表达式获取的,形式为:#{前面定义好的id.属性名} -->
        <property name="username" value="#{person.address.city}"></property>
    </bean>

引用Map集合中的某个value

  1. #{id.Map名称.key名称}
  2. #{id.Map名称['key名称']}

【了解】spring表达式支持方法的调用

【了解】 自动装装配(autowire)

实例

public class UserDao(){
    public void reg(){

}
}
public class UserService{
    private UserDao userDao;
    private void reg(){
        userDao.reg();
}
}

<bean id="userDao" class="cn.tedu.spring.UserDao"/>

<!--这里不需要配置property节点来ref上面定义的bean,只需要使用自动装配即可-->
<bean id="userService" class="cn.tedu.spring.UserService" autowire="byName">
上一篇下一篇

猜你喜欢

热点阅读