1、因為spring容器的一些機制,在讀取配置文件進行數據庫的配置等等是很有必要的,所以我們要考慮配置文件的的讀取方式以及各個方式的實用性
2、配置文件的讀取方式我這里介紹2種,目的是掌握這2種就可以很好的應用了
3、這里我的properies配置文件如下:
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/m_model?useUnicode=true&characterEncoding=utf8 username=root password=root
4、第一種讀取方式:一種采用bean的配置方式,一種是標簽的形式
1)bean的配置方式(推薦使用這種方式)
<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <!-- 如果是單個文件可以按照注釋的方式來配置 --> <!-- <property name="location" value="classpath:conf/spring-config.properties"/> --> <property name="locations"> <array> <value>classpath:conf/spring-config.properties</value> </array> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </bean>
2)標簽的配置方式
<context:property-placeholder location="classpath:conf/spring-config.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </bean>
問題:這里我遇到了讀取配置處錯的問題:
會出現亂碼的情況,然后我找了一些處理方式
(1)修改properties針對字符的配置
url=jdbc:mysql\://localhost\:3306\/m_model?useUnicode=true&characterEncoding=utf8
(2)加入讀取配置時進行文件編碼
<context:property-placeholder location="classpath:conf/spring-config.properties" file-encoding="UTF-8"/>
這兩種方式我都試過了,目前還不知道什么原因導致的亂碼問題。有大神可以指教一下
指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!指教!
5、是用util:properties便簽來實現的,這種方式就是單純的來讀取配置文件
<util:properties id="config" location="classpath:conf/spring-config.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="#{config.driver}"/> <property name="url" value="#{config.url}"/> <property name="username" value="#{config.username}"/> <property name="password" value="#{config.password}"/> </bean>
注意:這里是采用#{id.屬性}來實現具體的讀取,上面是直接$(屬性來實現的)
6、這兩種方式是針對於xml配置xml賦值的方式來實現,在使用過程中也可以使用通過標簽的方式給具體的java代碼賦值,便於管理
@Value("#{config.username}") private String userName;
這種方式也可以用來裝配具體的屬性,便於合理管理相關配置