本文主要想记录最近的两个使用spring框架实现通过配置文件装备Bean,以及使用SpEL装备Bean。

1.使用配置文件装备Bean:

当我们写某些Bean的时候是希望这个Bean当中的属性是可以通过配置文件配置的,而不是完全写死在程序里面的。这个时候我们可以使用两个类一个注解来解决这个问题: 

  1):org.springframework.beans.factory.config.PropertiesFactoryBean

  2):org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer

这两个类的具体使用方法如下:

<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:test.properties</value>
</list>
</property>
</bean>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="properties" ref="configProperties"/>

将其配置在spring.xml文件中交给spring容器去管理,其中test.properties为你配置文件所在地址,需填写完整路径。

然后在你需要装备的Bean中的属性上使用@Value注解:

  例如:我的properties中配置的属性有name,age那么我就可以使用@Value("${name}")将test.properties中name对应的值注入到我需要的Bean的属性中去。

整个过程是不是非常简单呢~~~

2.SpEL

  如果经常写前端的朋友可能会非常熟悉jsp中的EL表达式,现在要给大家介绍的就是Spring的EL表达式~。

  需要了解得第一件事情就是SpEL表达式需要放到"#{...}"之中。在EL表达式我们可以直接填入String,boolean,float等类型的值,通过@Value注解实现注入,当然这肯定不能显示出他强大的地方。而事实他更大的方便之处在于可以调用系统类,以及交给spring容器管理的所有Bean;调用这些Bean的属性和方法。例如:

  “#{studySpring.name}”

 这儿这个studySpring为我所写的一个Bean的ID而name为其中一个String类型的属性。

  “#{T(System).currentTimeMillis()}”

  这就是调用的系统类,会获得程序运行时的当前系统时间。

  甚至可以这样写:
  “#{studySpring.name?.toUpperCase()}”

  这样做会将name属性的值在不为null的情况下转为大写,而为null的情况下返回null.

  "#{studySpring}"

  这是直接将ID为studySpring的Bean装配到当前Bean中,可以取代@Autowired

  同时,SpEL是支持带运算符的,可以支持算数运算,比较运算,逻辑运算,条件运算以及正则表达式!

    算数运算:+、-、*、/、%、^

    比较运算:>、<、==、<=、>=、lt、gt、eq、le、ge

    逻辑运算:and、or、not、|

    条件运算:?:(ternary)、?:(Elvis)

    正则表达式:matches

  再举一些对应的应用例子:

  “#{2*studySpring.age}”

  这个例子中存在一个很有趣的事情,如果所引用的studySpring这个Bean中age本身为String类型,那么此处所做的操作是将这个String复制2次,如果*3则是复制3次。如果为任意数字类型则是做算数运算。(若此处使用Value注解复制的话,如果本身为String类型,且不能转为数字类型会报错:org.springframework.beans.factory.BeanCreationException)

  本来还想再多写一点,限于时间关系~就写到这儿抛砖引玉吧,如果感兴趣的朋友可以自行尝试其他运算方式。。。

使用Spring表达式语言进行装备--SpEL的更多相关文章

  1. Spring表达式语言SpEL

    Spring表达式语言,简称SpEL,是一个支持运行时查询和操作对象图的强大的表达式语言.语法类似于EL:SpEL使用#{…}作为定界符,所有在大括号中的字符都将被认为是SpEL SpEL为bean属 ...

  2. Spring表达式语言之SpEL

    •Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言. •语法类似于 EL:SpEL 使用 #{…} 作为定界符,所有在大框号中的字符都将被认为是 SpEL ...

  3. Spring基础13——Spring表达式语言:SpEL

    1.SpEL简介 Spring表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言.语法上类似于EL:SpEL使用#{...}作为界定符,所有在大框号中的字符都将被认为是Sp ...

  4. Spring ——表达式语言 Spring Expression Language (转载)

    目录 SpEL简介与功能特性 一.为什么需要Spring表达式语言 二.SpEL表达式Hello World! 三.SpEL表达式 3.1.文字表达式 3.2.SPEL语言特性 3.2.1.属性 3. ...

  5. Spring表达式语言 之 5.1 概述 5.2 SpEL基础(拾叁)

    5.1  概述 5.1.1  概述 Spring表达式语言全称为"Spring Expression Language",缩写为"SpEL",类似于Struts ...

  6. 开涛spring3(5.1&5.2) - Spring表达式语言 之 5.1 概述 5.2 SpEL基础

    5.1  概述 5.1.1  概述 Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”,类似于Struts2x中使用的OGNL表达式语言,能在运行 ...

  7. Spring学习笔记--Spring表达式语言SpEL

    Spring3引入了Spring表达式语言(Spring Expression Language,SpEL).SpEL是一种强大的.简洁的装配Bean的方式,它通过运行期执行的表达式将值装配到Bean ...

  8. Spring表达式语言:SpEL

    1.Spring表达式语言(简称:SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言. 2.语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号内的字符都被认为是SpEL. 3 ...

  9. Spring表达式语言SpEL简单介绍

    Spring3引入了Spring表达式语言(Spring Expression Language,SpEL). SpEL有非常多特性.比較经常使用的包含: 1.使用bean的id来引用bean, 以下 ...

随机推荐

  1. RabbitMQ如何工作和RabbitMQ核心概念

    RabbitMQ是一个开源的消息代理软件.它接受来自生产者的消息并将其传递给消费者.它就像一个中间人,可以用来减少Web应用程序服务器的负载和交付时间. RabbitMQ如何工作 让我们简要介绍一下R ...

  2. apply,call和bind的用法区别

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. js 数组随机洗牌

    //先定义一个某数值范围内的随机数 function getRandom(min, max) { return Math.floor(Math.random() * (max - min + 1) + ...

  4. 上传漏洞总结-upload-labs

    介绍: Upload-labs是一个所有类型的上传漏洞的靶场 项目地址:https://github.com/c0ny1/upload-labs 思维导图: 小试牛刀: Pass-01 客户端js检查 ...

  5. Oracle DB 12c first glance

    单机上装了个12c,只看了看EM的界面……

  6. 参观微软Serbia开发中心和Office365 2019-01-31活动感悟

    这是<国外线下技术俱乐部建设>系列文章之一.   该活动网址是:https://www.meetup.com/ITPro-Serbia/events/258352104/ 活动内容是讲Of ...

  7. Neutron server的运行原理(未完待续)

    1.Neutron server首先是一个web server, 对于http和https协议的报文进行响应. 2.Neutron server进程里面包含了一个WSGI 应用程序,以及不同模块的pl ...

  8. Visual Studio 2019 RC入门

    介绍 在本文中,让我们看看如何开始使用Visual Studio 2019 RC.Microsoft现已发布Visual Studio Release Candidate,现在可以下载了.最初,Mic ...

  9. 商家APP店内点餐开启有桌台点餐模式

    商家APP店内点餐开启有桌台点餐模式 步骤一:管理员后台-配置管理--店铺配置--简易付tab页--是否支持扫码下单-是 步骤二:管理员后台-配置管理--设备管理--选择对应的机器--配置--云POS ...

  10. 高端内存映射之kmap持久内核映射--Linux内存管理(二十)

    1 高端内存与内核映射 尽管vmalloc函数族可用于从高端内存域向内核映射页帧(这些在内核空间中通常是无法直接看到的), 但这并不是这些函数的实际用途. 重要的是强调以下事实 : 内核提供了其他函数 ...