本文主要想记录最近的两个使用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. WebGIS中以version方式实现代码更新后前端自动读取更新代码的方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 前言 GIS代码进行更新后,由于用户前端已有缓存,导致更新的功能不 ...

  2. Unity Profiler的使用

    选中Development Build.Autoconnect Profiler和Script Debugging三个选项,如下图所示. 点击Build And Run按钮,将会编译项目并安装APK到 ...

  3. 操作DataTable数据,修改某列的值

    DataTable table : DataRow row=table.Rows[i];//DataTable的第i行 row.BeginEdit();//开始编辑行 row["column ...

  4. c/c++ linux 进程间通信系列7,使用pthread mutex

    linux 进程间通信系列7,使用pthread mutex #include <stdio.h> #include <stdlib.h> #include <unist ...

  5. SQLServer删除数据列

    删除数据列 开发或者生产过程中多建.错误或者重复的数据列需要进行删除操作. 使用SSMS数据库管理工具删除数据列 方式一 1.打开数据库->选择数据表->展开数据表->展开数据列-& ...

  6. jenkins使用开始踩坑(1)

    上篇文章 安装教程 :https://www.cnblogs.com/linuxchao/p/linuxchao-jenkins-setup.html 一.前戏 话说上一篇文章安装完 JDK 和 je ...

  7. ThreadLocal的简单使用和实现原理

    我们先看以下代码,不用ThreadLocal会发生什么情况 package com.qjc.thread.threadLocal; import java.text.ParseException; i ...

  8. Kafka 0.11.0.0 实现 producer的Exactly-once 语义(英文)

    Exactly-once Semantics are Possible: Here’s How Kafka Does it I’m thrilled that we have hit an excit ...

  9. particles.js在vue上的运用

    转:https://www.jianshu.com/p/c52b3e91c94f 知乎的首页后面的粒子动效总觉得很炫酷,搜了一下,发现是用particles.js编写的.刚好目前的项目是利用vue框架 ...

  10. linux下安装nodejs及npm

    转:https://www.cnblogs.com/wuyoucao/p/7011666.html 1.下载npm包 官网下载npm安装包,https://nodejs.org/en/,左边是稳定版右 ...