使用 Spring Boot 快速構建 Spring 框架應用,PropertyPlaceholderConfigurer

Spring 框架對於不少 Java 開發人員來講都不陌生。自從 2002 年發佈以來,Spring 框架已經成爲企業應用開發領域很是流行的基礎框架。有大量的企業應用基於 Spring 框架來開發。Spring 框架包含幾十個不一樣的子項目,涵蓋應用開發的不一樣方面。如此多的子項目和組件,一方面方便了開發人員的使用,另一個方面也帶來了使用方面的問題。每一個子項目都有必定的學習曲線。開發人員須要瞭解這些子項目和組件的具體細節,才能知道如何把這些子項目整合起來造成一個完整的解決方案。在如何使用這些組件上,並無相關的最佳實踐提供指導。對於新接觸 Spring 框架的開發人員來講,並不知道如何更好的使用這些組件。Spring 框架的另一個常見問題是要快速建立一個能夠運行的應用比較麻煩。Spring Boot 是 Spring 框架的一個新的子項目,用於建立 Spring 4.0 項目。它的開發始於 2013 年。2014 年 4 月發佈 1.0.0 版本。它能夠自動配置 Spring 的各類組件,並不依賴代碼生成和 XML 配置文件。Spring Boot 也提供了對於常見場景的推薦組件配置。Spring Boot 能夠大大提高使用 Spring 框架時的開發效率。本文將對 Spring Boot 進行詳細的介紹。html

簡介

從 Spring Boot 項目名稱中的 Boot 能夠看出來,Spring Boot 的做用在於建立和啓動新的基於 Spring 框架的項目。它的目的是幫助開發人員很容易的建立出獨立運行和產品級別的基於 Spring 框架的應用。Spring Boot 會選擇最適合的 Spring 子項目和第三方開源庫進行整合。大部分 Spring Boot 應用只須要很是少的配置就能夠快速運行起來。java

Spring Boot 包含的特性以下:mysql

  • 建立能夠獨立運行的 Spring 應用。
  • 直接嵌入 Tomcat 或 Jetty 服務器,不須要部署 WAR 文件。
  • 提供推薦的基礎 POM 文件來簡化 Apache Maven 配置。
  • 儘量的根據項目依賴來自動配置 Spring 框架。
  • 提供能夠直接在生產環境中使用的功能,如性能指標、應用信息和應用健康檢查。
  • 沒有代碼生成,也沒有 XML 配置文件。

經過 Spring Boot,建立新的 Spring 應用變得很是容易,並且建立出的 Spring 應用符合通用的最佳實踐。只須要簡單的幾個步驟就能夠建立出一個 Web 應用。下面介紹使用 Maven 做爲構建工具建立的 Spring Boot 應用。代碼清單 1 給出了該應用的 POM 文件。web

清單 1. Spring Boot 示例應用的 POM 文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.midgetontoes</groupId>
<artifactId>spring-boot-simple</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
 <spring.boot.version>1.1.4.RELEASE</spring.boot.version>
</properties>
<dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 <version>${spring.boot.version}</version>
 </dependency>
</dependencies>
<build>
 <plugins>
 <plugin>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
 <executions>
 <execution>
 <goals>
 <goal>repackage</goal>
 </goals>
 </execution>
 </executions>
 </plugin>
 </plugins>
</build>
</project>

代碼清單 1 中的 POM 文件中能夠看到,應用所聲明的依賴不多,只有一個「org.springframework.boot:spring-boot-starter-web」,而不是像其餘 Spring 項目同樣須要聲明不少的依賴。當使用 Maven 命令「mvn dependency:tree」來查看項目實際的依賴時,會發現其中包含了 Spring MVC 框架、SLF4J、Jackson、Hibernate Validator 和 Tomcat 等依賴。這實際上 Spring 推薦的 Web 應用中使用的開源庫的組合。代碼清單 2 中給出了示例應用的 Java 代碼。spring

清單 2. Spring Boot 示例應用的 Java 代碼
@RestController
@EnableAutoConfiguration
public class Application {
 @RequestMapping("/")
 String home() {
 return "Hello World!";
 }
 public static void main(String[] args) throws Exception {
 SpringApplication.run(Application.class, args);
 }
}

代碼清單 2 中的 Java 類 Application 是一個簡單的能夠獨立運行的 Web 應用。直接運行該 Java 類會啓動一個內嵌的 Tomcat 服務器運行在 8080 端口。訪問「http://localhost:8080」能夠看到頁面上顯示「Hello World!」。也就是說,只須要簡單的 2 個文件就能夠啓動一個獨立運行的 Web 應用。並不須要額外安裝 Tomcat 這樣的應用服務器,也不須要打包成 WAR 文件。能夠經過「mvn spring-boot:run」在命令行啓動該應用。在代碼清單 1 中的 POM 文件中添加了「org.springframework.boot:spring-boot-maven-plugin」插件。在添加了該插件以後,當運行「mvn package」進行打包時,會打包成一個能夠直接運行的 JAR 文件,使用「java -jar」命令就能夠直接運行。這在很大程度上簡化了應用的部署,只須要安裝了 JRE 就能夠運行。sql

代碼清單 2 中的「@EnableAutoConfiguration」註解的做用在於讓 Spring Boot 根據應用所聲明的依賴來對 Spring 框架進行自動配置,這就減小了開發人員的工做量。註解「@RestController」和」@RequestMapping」由 Spring MVC 提供,用來建立 REST 服務。這兩個註解和 Spring Boot 自己並無關係。mongodb

 

Spring Boot 推薦的基礎 POM 文件

上一節的代碼清單 1 中給出的「org.springframework.boot:spring-boot-starter-web」是 Spring Boot 所提供的推薦的基礎 POM 文件之一,用來提供建立基於 Spring MVC 的 Web 應用所需的第三方庫依賴。除了這個 POM 文件以外,Spring Boot 還提供了其餘相似的 POM 文件。全部這些基礎 POM 依賴都在「org.springframework.boot」組中。一些重要 POM 文件的具體說明見表 1數據庫

表 1. Spring Boot 推薦的基礎 POM 文件
名稱 說明
spring-boot-starter 核心 POM,包含自動配置支持、日誌庫和對 YAML 配置文件的支持。
spring-boot-starter-amqp 經過 spring-rabbit 支持 AMQP。
spring-boot-starter-aop 包含 spring-aop 和 AspectJ 來支持面向切面編程(AOP)。
spring-boot-starter-batch 支持 Spring Batch,包含 HSQLDB。
spring-boot-starter-data-jpa 包含 spring-data-jpa、spring-orm 和 Hibernate 來支持 JPA。
spring-boot-starter-data-mongodb 包含 spring-data-mongodb 來支持 MongoDB。
spring-boot-starter-data-rest 經過 spring-data-rest-webmvc 支持以 REST 方式暴露 Spring Data 倉庫。
spring-boot-starter-jdbc 支持使用 JDBC 訪問數據庫。
spring-boot-starter-security 包含 spring-security。
spring-boot-starter-test 包含經常使用的測試所需的依賴,如 JUnit、Hamcrest、Mockito 和 spring-test 等。
spring-boot-starter-velocity 支持使用 Velocity 做爲模板引擎。
spring-boot-starter-web 支持 Web 應用開發,包含 Tomcat 和 spring-mvc。
spring-boot-starter-websocket 支持使用 Tomcat 開發 WebSocket 應用。
spring-boot-starter-ws 支持 Spring Web Services。
spring-boot-starter-actuator 添加適用於生產環境的功能,如性能指標和監測等功能。
spring-boot-starter-remote-shell 添加遠程 SSH 支持。
spring-boot-starter-jetty 使用 Jetty 而不是默認的 Tomcat 做爲應用服務器。
spring-boot-starter-log4j 添加 Log4j 的支持。
spring-boot-starter-logging 使用 Spring Boot 默認的日誌框架 Logback。
spring-boot-starter-tomcat 使用 Spring Boot 默認的 Tomcat 做爲應用服務器。

全部這些 POM 依賴的好處在於爲開發 Spring 應用提供了一個良好的基礎。Spring Boot 所選擇的第三方庫是通過考慮的,是比較適合產品開發的選擇。可是 Spring Boot 也提供了不一樣的選項,好比日誌框架能夠用 Logback 或 Log4j,應用服務器能夠用 Tomcat 或 Jetty。apache

 

自動配置

Spring Boot 對於開發人員最大的好處在於能夠對 Spring 應用進行自動配置。Spring Boot 會根據應用中聲明的第三方依賴來自動配置 Spring 框架,而不須要進行顯式的聲明。好比當聲明瞭對 HSQLDB 的依賴時,Spring Boot 會自動配置成使用 HSQLDB 進行數據庫操做。

Spring Boot 推薦採用基於 Java 註解的配置方式,而不是傳統的 XML。只須要在主配置 Java 類上添加「@EnableAutoConfiguration」註解就能夠啓用自動配置。Spring Boot 的自動配置功能是沒有侵入性的,只是做爲一種基本的默認實現。開發人員能夠經過定義其餘 bean 來替代自動配置所提供的功能。好比當應用中定義了本身的數據源 bean 時,自動配置所提供的 HSQLDB 就不會生效。這給予了開發人員很大的靈活性。既能夠快速的建立一個能夠當即運行的原型應用,又能夠不斷的修改和調整以適應應用開發在不一樣階段的須要。可能在應用最開始的時候,嵌入式的內存數據庫(如 HSQLDB)就足夠了,在後期則須要換成 MySQL 等數據庫。Spring Boot 使得這樣的切換變得很簡單。

 

外部化的配置

在應用中管理配置並非一個容易的任務,尤爲是在應用須要部署到多個環境中時。一般會須要爲每一個環境提供一個對應的屬性文件,用來配置各自的數據庫鏈接信息、服務器信息和第三方服務帳號等。一般的應用部署會包含開發、測試和生產等若干個環境。不一樣的環境之間的配置存在覆蓋關係。測試環境中的配置會覆蓋開發環境,而生產環境中的配置會覆蓋測試環境。Spring 框架自己提供了多種的方式來管理配置屬性文件。Spring 3.1 以前可使用 PropertyPlaceholderConfigurer。Spring 3.1 引入了新的環境(Environment)和概要信息(Profile)API,是一種更加靈活的處理不一樣環境和配置文件的方式。不過 Spring 這些配置管理方式的問題在於選擇太多,讓開發人員無所適從。Spring Boot 提供了一種統一的方式來管理應用的配置,容許開發人員使用屬性文件、YAML 文件、環境變量和命令行參數來定義優先級不一樣的配置值。

Spring Boot 所提供的配置優先級順序比較複雜。按照優先級從高到低的順序,具體的列表以下所示。

  1. 命令行參數。
  2. 經過 System.getProperties() 獲取的 Java 系統參數。
  3. 操做系統環境變量。
  4. 從 java:comp/env 獲得的 JNDI 屬性。
  5. 經過 RandomValuePropertySource 生成的「random.*」屬性。
  6. 應用 Jar 文件以外的屬性文件。
  7. 應用 Jar 文件內部的屬性文件。
  8. 在應用配置 Java 類(包含「@Configuration」註解的 Java 類)中經過「@PropertySource」註解聲明的屬性文件。
  9. 經過「SpringApplication.setDefaultProperties」聲明的默認屬性。

Spring Boot 的這個配置優先級看似複雜,實際上是很合理的。好比命令行參數的優先級被設置爲最高。這樣的好處是能夠在測試或生產環境中快速地修改配置參數值,而不須要從新打包和部署應用。

SpringApplication 類默認會把以「--」開頭的命令行參數轉化成應用中可使用的配置參數,如 「--name=Alex」 會設置配置參數 「name」 的值爲 「Alex」。若是不須要這個功能,能夠經過 「SpringApplication.setAddCommandLineProperties(false)」 禁用解析命令行參數。

RandomValuePropertySource 能夠用來生成測試所須要的各類不一樣類型的隨機值,從而免去了在代碼中生成的麻煩。RandomValuePropertySource 能夠生成數字和字符串。數字的類型包含 int 和 long,能夠限定數字的大小範圍。以「random.」做爲前綴的配置屬性名稱由 RandomValuePropertySource 來生成,如代碼清單 3 所示。

清單 3. 使用 RandomValuePropertySource 生成的配置屬性
user.id=${random.value}
user.count=${random.int}
user.max=${random.long}
user.number=${random.int(100)}
user.range=${random.int[100, 1000]}

屬性文件

屬性文件是最多見的管理配置屬性的方式。Spring Boot 提供的 SpringApplication 類會搜索並加載 application.properties 文件來獲取配置屬性值。SpringApplication 類會在下面位置搜索該文件。

  • 當前目錄的「/config」子目錄。
  • 當前目錄。
  • classpath 中的「/config」包。
  • classpath

上面的順序也表示了該位置上包含的屬性文件的優先級。優先級按照從高到低的順序排列。能夠經過「spring.config.name」配置屬性來指定不一樣的屬性文件名稱。也能夠經過「spring.config.location」來添加額外的屬性文件的搜索路徑。若是應用中包含多個 profile,能夠爲每一個 profile 定義各自的屬性文件,按照「application-{profile}」來命名。

對於配置屬性,能夠在代碼中經過「@Value」來使用,如代碼清單 4 所示。

清單 4. 經過「@Value」來使用配置屬性
@RestController
@EnableAutoConfiguration
public class Application {
 @Value("${name}")
 private String name;
 @RequestMapping("/")
 String home() {
 return String.format("Hello %s!", name);
 }
}

代碼清單 4 中,變量 name 的值來自配置屬性中的「name」屬性。

YAML

相對於屬性文件來講,YAML 是一個更好的配置文件格式。YAML 在 Ruby on Rails 中獲得了很好的應用。SpringApplication 類也提供了對 YAML 配置文件的支持,只須要添加對 SnakeYAML 的依賴便可。代碼清單 5 給出了 application.yml 文件的示例。

清單 5. 使用 YAML 表示的配置屬性
spring:
 profiles: development
db:
 url: jdbc:hsqldb:file:testdb
 username: sa
 password:
---
spring:
 profiles: test
db:
 url: jdbc:mysql://localhost/test
 username: test
 password: test

代碼清單 5 中的 YAML 文件同時給出了 development 和 test 兩個不一樣的 profile 的配置信息,這也是 YAML 文件相對於屬性文件的優點之一。除了使用「@Value」註解綁定配置屬性值以外,還可使用更加靈活的方式。代碼清單 6 給出的是使用代碼清單 5 中的 YAML 文件的 Java 類。經過「@ConfigurationProperties(prefix="db")」註解,配置屬性中以「db」爲前綴的屬性值會被自動綁定到 Java 類中同名的域上,如 url 域的值會對應屬性「db.url」的值。只須要在應用的配置類中添加「@EnableConfigurationProperties」註解就能夠啓用該自動綁定功能。

清單 6. 使用 YAML 文件的 Java 類
@Component
@ConfigurationProperties(prefix="db")
public class DBSettings {
 private String url;
 private String username;
 private String password;
}
 

開發 Web 應用

Spring Boot 很是適合於開發基於 Spring MVC 的 Web 應用。經過內嵌的 Tomcat 或 Jetty 服務器,能夠簡化對 Web 應用的部署。Spring Boot 經過自動配置功能對 Spring MVC 應用作了一些基本的配置,使其更加適合通常 Web 應用的開發要求。

HttpMessageConverter

Spring MVC 中使用 HttpMessageConverter 接口來在 HTTP 請求和響應之間進行消息格式的轉換。默認狀況下已經經過 Jackson 支持 JSON 和經過 JAXB 支持 XML 格式。能夠經過建立自定義 HttpMessageConverters 的方式來添加其餘的消息格式轉換實現。

靜態文件

默認狀況下,Spring Boot 能夠對 「/static」、「/public」、「/resources」 或 「/META-INF/resources」 目錄下的靜態文件提供支持。同時 Spring Boot 還支持 Webjars。路徑「/webjars/**」下的內容會由 webjar 格式的 Jar 包來提供。

 

生產環境運維支持

與開發和測試環境不一樣的是,當應用部署到生產環境時,須要各類運維相關的功能的支持,包括性能指標、運行信息和應用管理等。全部這些功能都有不少技術和開源庫能夠實現。Spring Boot 對這些運維相關的功能進行了整合,造成了一個功能完備和可定製的功能集,稱之爲 Actuator。只須要在 POM 文件中增長對 「org.springframe.boot:spring-boot-starter-actuator」 的依賴就能夠添加 Actuator。Actuator 在添加以後,會自動暴露一些 HTTP 服務來提供這些信息。這些 HTTP 服務的說明如表 2

表 2. Spring Boot Actuator 所提供的 HTTP 服務
名稱 說明 是否包含敏感信息
autoconfig 顯示 Spring Boot 自動配置的信息。
beans 顯示應用中包含的 Spring bean 的信息。
configprops 顯示應用中的配置參數的實際值。
dump 生成一個 thread dump。
env 顯示從 ConfigurableEnvironment 獲得的環境配置信息。
health 顯示應用的健康狀態信息。
info 顯示應用的基本信息。
metrics 顯示應用的性能指標。
mappings 顯示 Spring MVC 應用中經過「
@RequestMapping」添加的路徑映射。
shutdown 關閉應用。
trace 顯示應用相關的跟蹤(trace)信息。

對於表 2中的每一個服務,經過訪問名稱對應的 URL 就能夠獲取到相關的信息。如訪問「/info」就能夠獲取到 info 服務對應的信息。服務是否包含敏感信息說明了該服務暴露出來的信息是否包含一些比較敏感的信息,從而肯定是否須要添加相應的訪問控制,而不是對全部人都公開。全部的這些服務都是能夠配置的,好比經過改變名稱來改變相應的 URL。下面對幾個重要的服務進行介紹。

health 服務

Spring Boot 默認提供了對應用自己、關係數據庫鏈接、MongoDB、Redis 和 Rabbit MQ 的健康狀態的檢測功能。當應用中添加了 DataSource 類型的 bean 時,Spring Boot 會自動在 health 服務中暴露數據庫鏈接的信息。應用也能夠提供本身的健康狀態信息,如代碼清單 7 所示。

清單 7. 自定義 health 服務
@Component
public class AppHealthIndicator implements HealthIndicator {
 @Override
 public Health health() {
 return Health.up().build();
 }
}

應用只須要實現 org.springframework.boot.actuate.health.HealthIndicator 接口,並返回一個 org.springframework.boot.actuate.health.Health 對象,就能夠經過 health 服務來獲取所暴露的信息。如代碼清單 8 所示。

清單 8. health 服務返回的結果
{"status":"UP","app":{"status":"UP"},"db":{"status":"UP","database":"HSQL Database Engine","hello":1}}

info 服務

info 服務所暴露的信息是徹底由應用來肯定的。應用中任何以「info.」開頭的配置參數會被自動的由 info 服務來暴露。只須要往 application.properties 中添加以「info.」開頭的參數便可,如代碼清單 9 所示。

清單 9. 添加 info 服務所需配置參數的屬性文件
info.app_name=My First Spring Boot Application
info.app_version=1.0.0

當訪問「/info」時,訪問的 JSON 數據如代碼清單 10 所示。

清單 10. Info 服務返回的結果
{"app_name":"My First Spring Boot Application","app_version":"1.0.0"}

metrics 服務

當訪問 metrics 服務時,能夠看到 Spring Boot 經過 SystemPublicMetrics 默認提供的一些系統的性能參數值,包括內存、CPU、Java 類加載和線程等的基本信息。應用能夠記錄其餘所須要的信息。Spring Boot 默認提供了兩種類型的性能指標記錄方式:gauge 和 counter。gauge 用來記錄單個絕對數值,counter 用來記錄增量或減量值。好比在一個 Web 應用中,能夠用 counter 來記錄當前在線的用戶數量。當用戶登陸時,把 counter 的值加 1;當用戶退出時,把 counter 的值減 1。代碼清單 11 給出了一個示例。

清單 11. 自定義的 metrics 服務
@RestController
public class GreetingsController {
 @Autowired
 private CounterService counterService;
 @RequestMapping("/greet")
 public String greet() {
 counterService.increment("myapp.greet.count");
 return "Hello!";
 }
}

代碼清單 11 中添加了對 Spring Boot 提供的 CounterService 的依賴。當 greet 方法被調用時,會把名稱爲「myapp.greet.count」的計數器的值加 1。也就是當用戶每次訪問「/greet」時,該計算器就會被加 1。除了 CounterService 以外,還可使用 GaugeService 來記錄絕對值。

使用 JMX 進行管理

添加 Actuator 後所暴露的 HTTP 服務只能提供只讀的信息。若是須要對應用在運行時進行管理,則須要用到 JMX。Spring Boot 默認提供了 JMX 管理的支持。只須要經過 JDK 自帶的 JConsole 鏈接到應用的 JMX 服務器,就能夠看到在域「org.springframework.boot」中 mbean。能夠經過 Spring 提供的 @ManagedResource、@ManagedAttribute 和 @ManagedOperation 註解來建立應用本身的 mbean。

 

使用 Spring Boot CLI

Spring Boot 提供了命令行工具來運行 Groovy 文件。命令行工具的安裝很是簡單,只須要下載以後解壓縮便可。下載地址見參考資源。解壓以後能夠運行 spring 命令來使用該工具。經過 Groovy 開發的應用與使用 Java 並無差異,只不過使用 Groovy 簡化的語法可使得代碼更加簡單。代碼清單 12 給出了與代碼清單 2 功能相同的 Groovy 實現。

清單 12. 使用 Groovy 的示例應用
@RestController
class WebApplication {
 @RequestMapping("/")
 String home() {
 "Hello World!"
 }
}

只須要使用「spring run app.groovy」就能夠運行該應用。還可使用 Groovy 提供的 DSL 支持來簡化應用,如代碼清單 13 所示。

清單 13. 使用 Groovy DSL 簡化應用
@RestController
class WebApplication {
 @Autowired
 Service service
 @RequestMapping("/")
 String home() {
 service.greet()
 }
}
class Service {
String message
 String greet() {
 message
 }
}
beans {
 service(Service) {
 message = "Another Hello"
 }
}

代碼清單 13 中,經過「beans」DSL 能夠快速建立和配置 Spring bean。

 

結束語

對於廣大使用 Spring 框架的開發人員來講,Spring Boot 無疑是一個很是實用的工具。本文詳細介紹瞭如何經過 Spring Boot 快速建立 Spring 應用以及它所提供的自動配置和外部化配置的能力,同時還介紹了 Spring Boot 內建的 Actuator 提供的能夠在生產環境中直接使用的性能指標、運行信息和應用管理等功能,最後介紹了 Spring Boot 命令行工具的使用。經過基於依賴的自動配置功能,使得 Spring 應用的配置變得很是簡單。在依賴的管理上也變得更加簡單,不須要開發人員本身來進行整合。Actuator 所提供的功能很是實用,對於在生產環境下對應用的監控和管理是大有好處的。Spring Boot 應該成爲每一個使用 Spring 框架的開發人員使用的工具。

http://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/support/PropertySourcesPlaceholderConfigurer.html

@EnableConfigurationProperties

http://wiselyman.iteye.com/blog/2184586

 

通常使用PropertyPlaceholderConfigurer來替換佔位符,例如:
而PropertySourcesPlaceholderConfigurer在此基礎上會和Environment and PropertySource配合更好。

http://www.cnblogs.com/beiyeren/p/3488871.html

 

http://blog.csdn.net/feiyu8607/article/details/8282893
Spring中PropertyPlaceholderConfigurer這個類,它是用來解析Java Properties屬性文件值,並提供在spring配置期間替換使用屬性值。接下來讓咱們逐漸的深刻其配置。

https://docs.spring.io/spring/docs/2.0.x/javadoc-api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html

 

spring  配置的時候常常咱們常常把數據庫配置參數放到一個單獨的配置文件中jdbc.properties文件中,那麼在spring 的xml文件如何引用呢.

 

    這裏咱們可用 org.springframework.beans.factory.config包中的PropertyPlaceholderConfigurer,PropertyOverrideConfigurer兩個類:

配置以下:

  1. <!-- 用於引入 jdbc有配置文件參數 可使用PropertyPlaceholderConfigurer 或者PropertyOverrideConfigurer -->  
  2. <bean  class="org.springframework.beans.factory.PropertyPlaceholderConfigurer">  
  3.         <property name="location">  
  4.             <value>jdbc.properties</value>  
  5.         </property>  
  6. </bean

而後咱們就在配置dataSource的時候通${key}的方式來調用了

 

  <!-- 利用上面導入的 配置文件配置 數據源  
  鏈接池的做用是能夠不用常常去得到一個鏈接
  最主要的是鏈接可重得使用使得性能有很大的提高
  -->
  <bean id="dataSource" class="org.apache.commons.dbcp.BaseDataSource" >
  <property name="driverClassName" value="${driverClassName}"/>
  <property name="url" value="${url}"/>
  <property name="username" value="${username}"/>
  <property name="password" value="${password}"/>
  <!-- 初始人鏈接 -->
  <property name="initialSize" value="${initialSize}"/>
  <!-- 最大鏈接 -->
  <property name="maxActive" value="${maxActive}"/>
  <!-- 最大空閒值.當通過一個高峯時間後,鏈接池能夠慢慢將已經用不到的鏈接慢慢釋放一部分,一直減小到maxIdle爲止 -->
<property name="maxIdle" value="${maxIdle}"/>
<!--  最小空閒值.當空閒的鏈接數少於閥值時,鏈接池就會預申請去一些鏈接,以避免洪峯來時來不及申請 -->
    <property name="minIdle" value="${minIdle}"/>
  </bean>

 

jdbc.properties配置格式爲key=value的形式:

driverClassName=com.MySQL.jdbc.Driver
url=jdbc:mysql//localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
initialSize=10
maxActive=50
maxIdle=25
minIdle=15

http://blog.csdn.net/cookieweb/article/details/7062333

相關文章
相關標籤/搜索