除了我们常见的JSP EL表达式,还有一种Spring EL表达式,通过EL表达式读取properties文件中的值。
原理:在spring.xml中对.properties文件进行了扫描,
<context:property-placeholder location="***.properties"/>
//location属性中如果是在类路径下,需要写上 classpath:
//例如:<context:property-placeholder location="classpath:mybatis/db.properties"/>
详述:
spring将properties文件读取后在配置文件中直接将对象的配置信息填充到bean中的变量里。
原本使用PropertyPlaceholderConfigurer类进行文件信息配置。PropertyPlaceholderConfigurer实现了BeanFactoryPostProcessor接口,能够对<bean/>中的属性值进行外在化管理。
<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>userinfo.properties</value>
</list>
</property>
</bean>
<bean name="userInfo" class="test.UserInfo">
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</bean>
现在,直接使用
<context:property-placeholder location="classpath*:resources/*.properties" />
注意:spring容器中最多只能定义一个context:property-placeholder。
mybatis没有使用EL表达式,而是使用了OGNL!!
详见:https://blog.youkuaiyun.com/l153097889/article/details/52464548