Spring实战(八)bean装配的运行时值注入——属性占位符和SpEL

  前面涉及到依赖注入,我们一般哦都是将一个bean引用注入到另一个bean 的属性or构造器参数or Setter参数,即将为一个对象与另一个对象进行关联。

  bean装配的另一个方面是指将一个值注入到bean的属性or构造器参数中,通常我们可以将值硬编码在配置类中,XML中也是硬编码(写出所有值)。

  

  1、若想避免硬编码,让这些值在运行时再确定,Spring提供了两种在运行时求值的方式。

  • 属性占位符(Property placeholder)——Spring支持将属性定义到外部的属性文件中,然后用占位符将其插入到Spring bean中。
  • Spring表达式语言(SpEL)

  2、注入外部(属性源中)的值

  Spring中,处理外部值最简单的方式是:

  声明属性源——@PropertySource(“classpath:/xxx/xxx/app.property”)

  再通过Spring的Environment来检索属性值——env.getProperty("xxx");

  这样我们就利用外部文件中的值完成了注入。

  3、Spring中的Environment  API

  这个接口表示当前运行程序的运行环境,可以直接从Environment中检索属性。

  (详细解析参考:http://jinnianshilongnian.iteye.com/blog/2000183

  4、解析属性占位符

  占位符形式: "${disc.title}"(括号里为属性名称)

  解析外部属性能够将值的处理推迟到运行时,它根据名称解析来自Spring Environment和属性源的属性。

  5、使用SpEL进行装配(非常强大)

  Spring表达式语言提供了一种更通用的方式在运行时计算要注入的值,可以实现超乎想象的装配效果。

  SpEL表达式均要放入"#{  }"中。(配置时)

  SpEL可以表示字面值,如浮点、String值以及Boolean值:

  #{3.14159}、#{‘Hello‘}、#{false}

  SpEL可以引用bean(通过ID)、属性和方法;

  #{beanID}、#{beanID.field}、#{beanID.method()}

  

  运算符T()的结果是一个Class对象,它的价值在于可以访问目标类的静态方法和常量,例如:

  T(java.lang.Math).random()

  

  SpEL还提供许多其他运算符以及丰富的运算功能。

  

  

原文地址:https://www.cnblogs.com/bigbigbigo/p/8369671.html

时间: 2024-08-09 02:20:37

Spring实战(八)bean装配的运行时值注入——属性占位符和SpEL的相关文章

Spring实战3:装配bean的进阶知识

主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expression Language 在装配bean—依赖注入的本质一文中,我们探讨了Spring的三种管理bean的方式:自动装配.基于JavaConfig.基于XML文件.这篇文字将探讨一些Spring中关于bean的管理的高级知识,这些技能你可能不会每天都用,但是非常重要. 3.1 Environments

<Spring实战>2:装配Bean

1 声明Bean 1.1 创建 Spring 配置 Spring 容器提供两种配置 Bean 的方式:xml 配置和基于注解配置. Spring 配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/

spring in action小结3 运行时值注入

装配属性的方法1)使用Environment 相关方法检索.2)解析属性占位符 3) spring表达式语言 1. Environment常用方法 String getProperty(String key); String getProperty(String key, String defaultValue); <T> T getProperty(String key, Class<T> targetType); <T> T getProperty(String k

005运行时值注入

01.属性占位符(Property placeholder) @Configuration @PropertySource("classpath:/com/soundsystem/app.properties") public class ExpressiveConfig { @Autowired Environment env; @Bean public BlankDisc disc(){ return new BlaknDisc(env.getProperty("disc

8 -- 深入使用Spring -- 1...4 属性占位符配置器

8.1.4 属性占位符配置器 PropertyPlaceholderConfigurer 是一个容器后处理器,负责读取Properties属性文件里的属性值,并将这些属性值设置成Spring配置文件的数据. 通过使用PropertyPlaceholderConfigurer后处理器,可以将Spring配置文件中的部分数据放在属性文件中设置. XML : <?xml version="1.0" encoding="UTF-8"?> <!-- Spri

Spring(3.2.3) - Beans(12): 属性占位符

使用属性占位符可以将 Spring 配置文件中的部分元数据放在属性文件中设置,这样可以将相似的配置(如 JDBC 的参数配置)放在特定的属性文件中,如果只需要修改这部分配置,则无需修改 Spring 配置文件,修改属性文件即可.下面是一个属性占位符的示例. Spring  配置: <!-- 将配置值具体化到一个属性文件中,并且使用属性文件的key名作为占位符 --> <context:property-placeholder location="classpath:jdbc.p

Spring属性占位符 PropertyPlaceholderConfigurer

http://www.cnblogs.com/yl2755/archive/2012/05/06/2486752.html PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现.PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java Properties文件中去.在XML文件中用${key}替换指定的properties文件

spring实战之Bean的自动装配(非注解方式)

Bean的自动装配 自动装配(autowiring)有助于减少甚至消除配置<property>元素和<constructor-arg>元素,让Spring自动识别如何装配Bean的依赖关系. 1.1 自动装配Bean属性: Spring提供了四种各具特色的自动装配策略: 1.byName-把与Bean的属性具有相同名字的其他Bean自动装配到Bean的对应属性中.如果没有跟属性的名字相匹配的Bean,则该属性不进行装配. 2.byType-把与Bean的属性具有相同类型的其他Bea

Spring 实战-第二章-装配Bean

Bean是Spring对象的声明(装配wiring),要使用Spring,必须先装配需要使用的对象,有3种装配的方式 自动化装配Bean 通过Java代码装配 通过XML装配 自动化装配Bean 自动化装配Bean很简单 1.声明接口 package soundsystem; public interface CompactDisc { void play(); } 2.添加注解 package soundsystem; import org.springframework.stereotype