spring 使用spel

來源:互聯網
上載者:User

1.car類

package com.hxzy;


public class Car {


private String brand;
private String address;
private int speed;
private double perimeter;

public void setBrand(String brand) {
this.brand = brand;
}

public void setAddress(String address) {
this.address = address;
}

public void setSpeed(int speed) {
this.speed = speed;
}

public void setPerimeter(double perimeter) {
this.perimeter = perimeter;
}

public double getPerimeter() {
return perimeter;
}

public Car() {

}

public Car(String brand, String address, int speed) {
super();
this.brand = brand;
this.address = address;
this.speed = speed;
}


@Override
public String toString() {
return "Car [brand=" + brand + ", address=" + address + ", speed="
+ speed + ", perimeter=" + perimeter + "]";
}


}

2.person類

package com.hxzy;


public class Person {


private String name;
private Car car;

private String city;
//根據car的xx確定info
private String info;

public void setName(String name) {
this.name = name;
}

public void setCar(Car car) {
this.car = car;
}

public void setCity(String city) {
this.city = city;
}

public void setInfo(String info) {
this.info = info;
}


public Person(String name, Car car, String city, String info) {
super();
this.name = name;
this.car = car;
this.city = city;
this.info = info;
}


public Person() {
}


@Override
public String toString() {
return "Person [name=" + name + ", car=" + car + ", city=" + city
+ ", info=" + info + "]";
}


}

3.address類

package com.hxzy;


public class Address {


private String city;
private String street;


public String getCity() {
return city;
}


public void setCity(String city) {
this.city = city;
}


public String getStreet() {
return street;
}


public void setStreet(String street) {
this.street = street;
}


@Override
public String toString() {
return "Address [city=" + city + ", street=" + street + "]";
}


public Address(String city, String street) {
super();
this.city = city;
this.street = street;
}


public Address() {
super();
}


}


4.bean配置類

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


    <bean id="car" class="com.hxzy.Car">
        <!-- 使用spel賦值字串 -->
        <property name="brand" value="#{'雪佛蘭'}"></property>
        <property name="address" value="上汽"></property>
        <property name="speed" value="#{'210'}"></property>
        <!-- 使用spel引用類的靜態屬性 -->
        <property name="perimeter" value="#{T(java.lang.Math).PI * 80}"></property>
    </bean>
    
   <bean id="address" class="com.hxzy.Address">
       <property name="city" value="#{'鄭州'}"></property>
       <property name="street" value="#{'南陽路'}"></property>
   </bean>
    
    <bean id="person" class="com.hxzy.Person">
        <property name="name" value="快樂的人"></property>
        <property name="car" value="#{car}"></property>
        <!-- 使用spel引用其他bean的屬性 #{car.address}用法錯誤,不知為何報錯。 -->
        <!--property name="city" value="#{car.address}"></property-->
        <property name="city" value="#{address.city}"></property>
        <!--  property name="city" value="合肥"></property-->
        <!-- spel使用運算子 -->

<!--使用如下方式時提示錯誤Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 4): Field or property 'speed' cannot be found on object of type 'com.hxzy.Car' ,不知為何。-->
        <!--  property name="info" value="#{car.speed > 200 ? '好車' : '普通車'}"></property-->

<!--使用如下方式時正確-->
         <property name="info" value="#{address.street.equals('南陽路') ? '合資車' : '垃圾車'}"></property>
        <!--property name="info" value="好車"></property-->
    </bean>


</beans>

5.測試類別

AbstractApplicationContext  ctx = new ClassPathXmlApplicationContext("spel.xml");

Car car = (Car) ctx.getBean("car");
System.out.println(car);

Address address = (Address) ctx.getBean("address");
System.out.println(address);

Person man = (Person) ctx.getBean("person");
System.out.println(man);
ctx.close();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.