Để hiểu rõ hơn về Spring:

  1. Spring phần 1: Spring là gì ? Giới thiệu Spring Framework trong Java
  2. Spring phần 2: Cài đặt Spring Tool Suite Cho Eclipse

Và cùng đến với Series Spring Core:

  1. Spring Core – Phần 1: Spring IoC , Inversion of Control trong Spring
  2. Spring Core – Phần 2: Spring Bean, Các scope trong Spring, Spring Bean Scope
  3. Spring Core – Phần 3: Spring Dependency Injection, DI trong Spring, so sánh CI – SI
  4. Spring Core – Phần 4: Spring Dependency Injection với Object, Collections, Map
  5. Spring Core – Phần 5: Spring AOP là gì? code ví dụ với Spring AOP
  6. Spring Core – Phần 6: AspectJ là gì? Spring AOP + AspectJ ví dụ với AspectJ
  7. Spring Core: Phần 7 – Spring PropertyPlaceholderConfigurer, lấy dữ liệu từ file properties
  8. Spring Core – Phần 8: Autowiring trong Spring, annotation @Autowired trong Spring, các kiểu autowiring
  9. Spring Core – Phần 9: Spring Auto Component Scanning, Các annotation hay dùng trong Spring
  10. Code ví dụ Spring đọc file từ resource folder (resources)
  11. Code ví dụ gửi email – gmail với Spring

Spring Core: Phần 7 – Spring PropertyPlaceholderConfigurer, lấy dữ liệu từ file properties.

Ở ví dụ đầu tiên về Spring, mình có tạo 1 bean:

package stackjava.com.springioc.applicationcontext;
public class DataResource {
  private String driverClassName;
  private String url;
  private String username;
  private String password;
  public String getDriverClassName() {
    return driverClassName;
  }
  public void setDriverClassName(String driverClassName) {
    this.driverClassName = driverClassName;
  }
  public String getUrl() {
    return url;
  }
  public void setUrl(String url) {
    this.url = url;
  }
  public String getUsername() {
    return username;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password = password;
  }
  public void printConnection() {
    System.out.println("url: " + this.url + "\n" + "username/password: " + this.username + "/" + this.password);
  }
}
<bean id="dataResource" class="stackjava.com.springioc.applicationcontext.DataResource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url" value="jdbc:mysql://localhost/database_name" />
  <property name="username" value="root" />
  <property name="password" value="admin1234" />
</bean>

Các bạn để ý rằng các thông tin kết nối tới database thế này là các thông tin config chung cho database nên người ta sẽ để riêng nó ra thành 1 file properties để dễ quản lý và thay đổi.

Đồng thời trong môi trường doanh nghiệp, các file cấu hình bean không thể chỉnh sửa một cách trực tiếp nên chúng ta phải tách nó ra thành file riêng cho mỗi lần deploy.

Ví dụ bán sản phẩm cho mỗi công ty khác nhau thì có các thông tin database khác nhau

–> Sửa thông tin tương ứng trong file .properties cho công ty đó là được.

Ví dụ: mình sẽ gộp các thông tin kết nối database thành file jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/database_name
jdbc.username=root
jdbc.password=admin1234
Spring Core: Phần 7 - Spring PropertyPlaceholderConfigurer, lấy dữ liệu từ file properties

Ví dụ với PropertyPlaceholderConfigurer

Khai báo một PropertyPlaceholderConfigurer trong file cấu hình bean và map nó với file .properties mà bạn tạo. Ở đây mình map với file jdbc.properties đã tạo.

<bean
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location">
    <value>jdbc.properties</value>
  </property>
</bean>

Để lấy dữ liệu từ file .properties cho vào bean bạn dùng format:  ${variable} trong đó variable là key trong cặp key-values trong file properties.

<bean id="dataResource" class="stackjava.com.springioc.applicationcontext.DataResource">
  <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>

Demo:

package stackjava.com.springioc.applicationcontext;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
  public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    DataResource obj = (DataResource) context.getBean("dataResource");
    obj.printConnection();
  }
}

Kết quả:

url: jdbc:mysql://localhost/database_name
username/password: root/admin1234

Bây giờ mỗi lần deploy, thay đổi thông tin database thì bạn sẽ sửa ở file jdbc.properties.


Loạt bài chủ đề Java trên trang stackjava.com bản quyền thuộc thầy Trần Hữu Cương. Bài viết đăng trên blog Techmaster được sự đồng ý của tác giả.

Thầy Trần Hữu Cương đã và đang tham gia giảng dạy tại Techmater khoá Lộ trình Java Spring Boot Full Stack

Link gốc bài viết tại đây.