Spring EL与OGNL和JSF EL相似,并在bean创建期间进行评估或执行。 另外,所有Spring表达式都可以通过XML或注释使用。
在本教程中,我们向您展示如何使用Spring Expression Language(SpEL)将String,integer和bean注入XML和注解属性中。
1. Spring EL依赖
在Maven pom.xml
文件中声明核心Spring jar,它将自动下载Spring EL依赖项。
档案:pom.xml
3.0.5.RELEASE
org.springframework
spring-core
${spring.version}
org.springframework
spring-context
${spring.version}
2.四季豆
两个简单的bean,后来使用SpEL将值以XML和注释形式注入属性。
package com.mkyong.core;
public class Customer {
private Item item;
private String itemName;
}
package com.mkyong.core;
public class Item {
private String name;
private int qty;
}
3. XML中的Spring EL
SpEL包含在#{ SpEL expression }
,请参见XML bean定义文件中的以下示例。
- #{itemBean} –将“ itemBean”注入“ customerBean” bean的“ item”属性。
- #{itemBean.name} –将“ itemBean”的“ name”属性注入“ customerBean” bean的“ itemName”属性中。
4.带有注释的Spring EL
在注释模式下查看等效版本。
注意
要在注释中使用SpEL,必须通过注释注册组件。 如果使用XML注册bean并在Java类中定义@Value
,则@Value
将无法执行。
package com.mkyong.core;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("customerBean")
public class Customer {
@Value("#{itemBean}")
private Item item;
@Value("#{itemBean.name}")
private String itemName;
//...
}
package com.mkyong.core;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("itemBean")
public class Item {
@Value("itemA") //inject String directly
private String name;
@Value("10") //inject interger directly
private int qty;
public String getName() {
return name;
}
//...
}
启用自动组件扫描。
在注释模式下,可以使用@Value
定义Spring EL。 在这种情况下,您可以将String和Integer值直接注入到“ itemBean ”中,然后再将“ itemBean”注入到“ customerBean ”属性中。
5.输出
运行它,XML中的SpEL和注释都显示相同的结果:
package com.mkyong.core;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml");
Customer obj = (Customer) context.getBean("customerBean");
System.out.println(obj);
}
}
输出量
Customer [item=Item [name=itemA, qty=10], itemName=itemA]
下载源代码
下载它– Spring3-EL-Hello-Worldr-Example.zip (6 KB)
参考
- Spring EL参考
标签: 你好世界 春天el spring3
翻译自: https://mkyong.com/spring3/spring-el-hello-world-example/