Việc đọc và sử dụng một properties file trong một ứng dụng là một thao tác rất quan trọng, giúp ứng dụng của chúng ta có thể sử dụng được trong nhiều môi trường khác nhau với các thông số cấu hình khác nhau. Trong Mule 3, việc đọc và sử dụng properties file sẽ liên quan nhiều đến việc sử dụng Spring framework để thao tác với các properties file. Cụ thể như thế nào? Chúng ta hãy cùng nhau tìm hiểu trong bài viết này các bạn nhé!
Đầu tiên, mình sẽ tạo một Maven Mule project để làm ví dụ:
Ứng dụng của chúng ta sẽ đơn giản bao gồm một HTTP Listener Connector dùng để lắng nghe request từ người dùng và một Huong Dan Java Logger component để lấy thông tin từ properties file rồi in ra console, như sau:
Trong đó:
HTTP Listener Connector được cấu hình như sau:
General Settings:
Còn Huong Dan Java Logger component sẽ được cấu hình ban đầu như sau:
Connector Configuration:
Bây giờ mình sẽ định nghĩa một tập tin properties nằm trong thư mục src/main/resource tên là application.properties với nội dung đơn giản như sau:
1 |
author.name=Khanh |
Giờ làm thế nào chúng ta có thể load giá trị của property author.name trong tập tin application.properties và sử dụng nó để in ra dòng chữ “Hello Khanh” với Huong Dan Java Logger component?
Để làm được điều này, đầu tiên các bạn cần tìm hiểu về cách mà Spring framework thao tác với các properties file. Các bạn có thể tham khảo thêm ở đây. Chúng ta có thể áp dụng cách mà Spring thao tác với các properties file trong Mule 3 trở về trước như sau:
Trong tập tin mule-esb-properties-file-mule3.xml, các bạn hãy khai báo namespace context của spring như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?xml version="1.0" encoding="UTF-8"?> <mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:huong-dan-java-logger-component="http://www.mulesoft.org/schema/mule/huong-dan-java-logger-component" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/huong-dan-java-logger-component http://www.mulesoft.org/schema/mule/huong-dan-java-logger-component/current/mule-huong-dan-java-logger-component.xsd"> <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> <huong-dan-java-logger-component:config name="Huong_Dan_Java_Logger__Configuration" category="com.huongdanjava" doc:name="Huong Dan Java Logger: Configuration"/> <flow name="mule-esb-properties-file-mule3Flow"> <http:listener config-ref="HTTP_Listener_Configuration" path="/properties-file" allowedMethods="GET" doc:name="HTTP"/> <huong-dan-java-logger-component:log config-ref="Huong_Dan_Java_Logger__Configuration" message="Hello" doc:name="Huong Dan Java Logger"/> </flow> </mule> |
Sau đó, sử dụng namespace context để đọc properties file như sau:
1 |
<context:property-placeholder location="classpath:application.properties" /> |
Bây giờ thì tương tự như Spring framework, các bạn có thể khai báo để sử dụng property author.name trong tập tin application.properties như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?xml version="1.0" encoding="UTF-8"?> <mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:huong-dan-java-logger-component="http://www.mulesoft.org/schema/mule/huong-dan-java-logger-component" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/huong-dan-java-logger-component http://www.mulesoft.org/schema/mule/huong-dan-java-logger-component/current/mule-huong-dan-java-logger-component.xsd"> <context:property-placeholder location="classpath:application.properties" /> <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> <huong-dan-java-logger-component:config name="Huong_Dan_Java_Logger__Configuration" category="com.huongdanjava" doc:name="Huong Dan Java Logger: Configuration"/> <flow name="mule-esb-properties-file-mule3Flow"> <http:listener config-ref="HTTP_Listener_Configuration" path="/properties-file" allowedMethods="GET" doc:name="HTTP"/> <huong-dan-java-logger-component:log config-ref="Huong_Dan_Java_Logger__Configuration" message="Hello ${author.name}" doc:name="Huong Dan Java Logger"/> </flow> </mule> |
Kết quả khi các bạn chạy ứng dụng và request tới địa chỉ http://localhost:8081/properties-file sẽ như sau:
Tương tự như Spring framework, các bạn có thể khai báo nhiều tập tin properties trong attribute location và cũng có thể khai báo attribute ignore-resource-not-found để bỏ qua những properties không tồn tại, như sau:
1 |
<context:property-placeholder location="classpath:application.properties,classpath:application1.properties" ignore-resource-not-found="true" /> |