初始化和销毁Bean

init-method && destory-method

<bean id="auditorium" class="test.Audirorium" init-method="turnOnLights" destory-method="turnOffLights"/>

 

如果上下文中有很多Bean都有相同name的初始化方法和销毁方法。可以在Beans元素的default-init-method && default-destory-method方法中声明。

<beans xmlns=**********
default-init-method="init"
default-destroy-method="destory">
<bean/>.... <beans>

使用<property>元素配置Bean属性,需要调用属性的setter方法来注入.

类似如下:

<property name="age" value="15"/>

命名空间p

<beans *********
xmlns:p="http://www.springframework.org/schema/p">
.... <p:age = "15"/>
<p:instrument-ref="saxophone"/>

内部Bean(inner Bean) : 可以使用在setter和构造器注入两种.

<property name="instrument">
<bean class="test.Saxophone"/>
</property> 类似: <bean id="saxophone" class="test.Saxophone"/>
...
<property name="instrument" ref="saxophone"/>
...

装配集合:可以装配各种集合,如java.util.List, java.util.Set, java.util.Collection, java.util.Map,java.util.Properties等等。可以设置properties和null值。

<list> 可重复

<set> 不可重复

<map>  name  value 可以是任意类型

<props> name value 必须是string类型

<property name="instruments">
<list>
<ref bean="guitar"/>
<ref bean="harmonica"/>
</list>
</property>
*****************************************
<property name="instruments">
<list>
<ref bean="guitar"/>
<ref bean="guitar"/>
</list>
</property>
*****************************************
<property name="instruments">
<map>
<entry key="Guitar" value-ref="guitar"/>
<entry key="Hamonica" value-ref="harmonica"/>
</map>
</property>
***************************************
key: entry键为string类型时
key-ref: entry键为其他Bean时
value: entry值为string类型时
value-ref: entry值为其他Bean时
***************************************
<property name="instruments">
<props>
<prop key="Guitar">guitar hum hum hum</prop>
<prop key="Hamonica"><null/></prop>
</props>
</property>

使用表达式装配

SpEL(Spring Expression Language)

字面值

<property name="count" value="#{5}"/>
<property name="count" value="#{5.98}"/>
<property name="name" value="#{'Chuck'}"/>
<property name="enable" value="#{true}"/>

 

引用bean

<!-- 引用bean -->
<property name="instrument" value="#{guitar}"/>
<property name="instrument" ref="guitar"/> <!-- 会调用 kenny.getInstrument() -->
<property name="instrument" ref="#{kenny.instrument}"/> <property name="song" ref="#{kenny.selectSong().toUpperCase()}"/>
<!-- 避免空指针异常,使用 ?. 代替 . 确保左边值不为null -->
<property name="song" ref="#{kenny.selectSong()?.toUpperCase()}"/>

 

调用类的方法: T()运算符

<...    value="#{T(java.lang.Math).PI}"/>

 

使用SpEL进行数值运算

<...  value="#{counter.total + 42}"/>
<... value="#{T(java.lang.Math).PI * circle.radius^2}"/> <!-- 比较值 -->
<... value="#{ circle.radius le 21}"/>
<!-- le less or equal -->
<!--eq equal -->
<!--lt less -->
<!--gt great -->
<!-- ge great or equal -->
<!-- 逻辑表达式 and or not -->
<!-- 条件表达式 ?:-->
<!-- 正则表达式 -->
<... value="#{admin.email matches '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.com' ? "right email" : "wrong email"}"

 

使用SpEL筛选集合

public class City{
private String name;
private String state;
private Integer population;
}

 

<util:list id="cities">
<bean class="test.City" p:name="Chicago" p:state"IL" p:population="232322"/>
<bean class="test.City" p:name="Houston" p:state"TX" p:population="235452"/>
</util:list>
<!-- 访问集合 -->
<... value="#{cities[1]}"/>

 

加载properties配置文件

<util:properties id="settings" location="classpath:settings.properties"/>

<... value="#{settings['twitter.accessToken']}"/>

 

systemEnvironment 机器上的所有环境变量

systemProperties 包含了Java启动时所设置的所有属性(通常用-D参数)

<... name="homePath" value="#{systemEnvironment['HOME']}"/>
<... name="homePath" value="#{systemProperties['application.home']}"

 

SpEL查询集合

查询运算符  .?[](所有匹配项)   .^[] (第一个匹配项)  .$[] 最后一个匹配项

eg  cities.?[population gt 10000]  ---  集合

投影运算符  .![]

eg cities.![name]   只包含城市名的string类型集合

     cities.![name + ‘,’+ state]  包含城市名和地区的String类型集合

Spring In Action ②的更多相关文章

  1. 1、Spring In Action 4th笔记(1)

    Spring In Action 4th笔记(1) 2016-12-28 1.Spring是一个框架,致力于减轻JEE的开发,它有4个特点: 1.1 基于POJO(Plain Ordinary Jav ...

  2. spring in action 4th --- quick start

    读spring in action. 环境搭建 quick-start依赖注入 面向切面 1.环境搭建 jdk1.8 gradle 2.12 Intelij idea 2016.2.1 1.1创建一个 ...

  3. ssh整合随笔(注解方式,Spring 管理action)

    Web.xml<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...

  4. Spring in action记录

    最近一段时间重新学习了一遍SPRING,现在对这些笔记整理一下,一来算是对之前的学习有一个交代,二来当是重新学习一次,三来可以留下备份 这次学习中以SPRING IN ACTION 4这学习资料,整书 ...

  5. Spring in Action 4th 学习笔记 之 AOP

    前提:本文中的AOP仅限于Spring AOP. 先说说为什么需要AOP 最简单的一个例子就是日志记录,如果想记录一些方法的执行情况,最笨的办法就是修改每一个需要记录的方法.但这,真的很笨... 好的 ...

  6. 学习spring in action 第一天

    这段时间,开始学习java吧,因为C sharp 学习了java的大量语法格式,所以,留意下,就不会错了,java 有的c sharp也有,而且之前我也学习过java的桌面开发,但是一下子上来就要自己 ...

  7. spring in action学习笔记十五:配置DispatcherServlet和ContextLoaderListener的几种方式。

    在spring in action中论述了:DispatcherServlet和ContextLoaderListener的关系,简言之就是DispatcherServlet是用于加载web层的组件的 ...

  8. spring in action 学习笔记十四:用纯注解的方式实现spring mvc

    在讲用纯注解的方式实现springmvc之前先介绍一个类:AbstractAnnotationDispatcherServletInitializer.这个类的作用是:任何一个类继承AbstractA ...

  9. spring in action 学习十一:property placeholder Xml方式实现避免注入外部属性硬代码化

    这里用到了placeholder特有的一个语言或者将表达形式:${},spring in action 描述如下: In spring wiring ,placeholder values are p ...

  10. spring in action学习笔记一:DI(Dependency Injection)依赖注入之CI(Constructor Injection)构造器注入

    一:这里先说一下DI(Dependency Injection)依赖注入有种表现形式:一种是CI(Constructor Injection)构造方法注入,另一种是SI(Set Injection) ...

随机推荐

  1. htnl中的遮罩层以及定位方式

    在页面显示遮罩层,例如:一个div的css样式: $msk.css({ "top":"0", "left":"0", & ...

  2. Xcode因为证书问题经常报的那些错

    去开始做 iOS开发的时候,因为证书问题 Xcode 经常报这样或那样的错,经过实践,现在看见 Xcode 报错已经心平气和了,经常报的错就那么多,整理一下. 1. 确认下证书是不是开发证书,如果是发 ...

  3. Clr Via C#读书笔记----基元线程同步构造

    线程文章:http://www.cnblogs.com/edisonchou/p/4848131.html 重点在于多个线程同时访问,保持线程的同步. 线程同步的问题: 1,线程同步比较繁琐,而且容易 ...

  4. .net学习之母版页执行顺序、jsonp跨域请求原理、IsPostBack原理、服务器端控件按钮Button点击时的过程、缓存、IHttpModule 过滤器

    1.WebForm使用母版页后执行的顺序是先执行子页面中的Page_Load,再执行母版页中的Page_Load,请求是先生成母版页的控件树,然后将子页面生成的控件树填充到母版页中,最后输出 2.We ...

  5. Pyqt 一个简单的浏览器

    使用QtWebKit 做一个简单的浏览器. mybrowserUI.ui <?xml version="1.0" encoding="UTF-8"?> ...

  6. 关于Mesos和Kubernetes的区别

    这个主题应该和服务发现注册一样,进入视野...

  7. yaf框架使用(centos6.5)

    安装好php环境之后 安装扩展包 $yum install php-devel /usr/bin/ 就会出现phpize工具包 下载yaf-2.2.8.gz源文件,解压后,进入源文件 phpize [ ...

  8. Entity Framework Code First for SQL Compact

    这篇博客将介绍EF Code First中如何使用SQL Compact.SQL Compact是微软推出的免费的关系型数据库,目前最新版本是SQL Compact 4.0.微软的开发工具VS 201 ...

  9. 使用Jmeter进行http接口性能测试

    在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具. 但是Postman只能模拟单客户端的单次请求,而对 ...

  10. 什么是好的API设计?(转)

    什么是API? 我们只要是在进行编程我们就需要不停的设计API. API简单来讲可以是一个调用的函数,一个接口. 抽象来说,接口是一个内聚系统暴漏给外部的一切信息,包含但不限于: 调用方式:比如通过l ...