【126、#{}和${}】

68 阅读1分钟

在 Spring 中,#{}和${} 都是用于属性占位符的语法,但它们的用途略有不同。

  1. ${}:用于取出配置文件中的属性值,通常用于配置文件中的变量,例如:

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    

    在这个例子中,用于获取配置文件中的属性值,例如{} 用于获取配置文件中的属性值,例如 {jdbc.driverClassName} 表示获取配置文件中的 jdbc.driverClassName 属性的值。

  2. #{}:用于表达式计算,通常用于动态计算属性值,例如:

    <bean id="myBean" class="com.example.MyBean">
        <property name="name" value="#{systemProperties['myapp.name']}"/>
    </bean>
    

    在这个例子中,#{} 用于计算表达式 systemProperties['myapp.name'] 的值,并将其注入到 MyBean 对象的 name 属性中。

需要注意的是,{} 和 #{} 的区别在于 {} 只是一个占位符,它的值只能是字符串类型;而 #{} 可以包含任意的 SpEL 表达式,它可以动态计算属性值并注入到对象中。因此,如果需要动态计算属性值,则需要使用 #{} 表达式。