一、什么是配置文件参数化?

配置文件参数化就是把Spring配置文件中须要常常批改的字符串信息,再进一步地抽取进去,将这些信息放在一个更小的配置文件中。

1.1 Spring配置文件中有这些须要常常批改的字符串吗?

存在的,比方连贯数据库的四因素

1.2 为什么要做这个参数化的动作

第一,如果xml文件的配置信息过多,不利于查问与批改,比方我搜半天都没找到
第二,运维人员不会spring,当它须要批改一些参数的时候,不可能要它动Spring的配置文件,万一改错了怎么办,同时将这些配置信息写在properties文件或yml文件中,比拟简洁,可能一眼就看到对应的参数了(如userName或password)

1.3 小结: 将配置文件参数化,最大的益处:有利于保护

二、如何进行配置文件的参数化?

第一步: 新建一个db.properties文件以 key=value 的模式,配置好对应的信息,如下

jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?userSSL=falsejdbc.username=rootjdbc.password=admin

第二步:在applicationContext.xml文件中配置好对应的四因素

首先要引入对应的context<context:property-placeholder location="classpath:db.properties"/><bean id="conn" class="cn.paul.spring.demo.hellospring.beanFactory.ConnectionBeanFactory">    <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,因为username是零碎的参数变量,如果间接是username的话会间接读取零碎的用户名的

备注:其中的符号${}位运算符,相似于通过符号外部的名称就能失去properties文件中所对应的值

2.1 配置文件参数化开发步骤总结

第一步:提供一个小配置文件(xxx.properties)名字:轻易搁置的地位:轻易 (个别都在resource包下)
第二步:将Spring的配置文件和小配置文件进行整合在applicationcontext.xml中引入小配置文件的门路,这样Spring才晓得你的值来自哪里<context:property-placeholder location="classpath:db.properties"/>

小插曲: 我的项目通过maven编译后,其实java文件夹下的文件和resources下的文件其实是放在一起的,如果关上target文件夹能够清晰地看到:代码 + 配置文件的内容构造,所以咱们回过来看这个配置文件<context>标签,咱们会意识到原来这个classPath就是这个对应的类的门路下(如图)

第三步:通过${key}获取小配置文件中对应的值,如上图