Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh
Trong những bài viết trước mình đã giới thiệu với các bạn về cách đọc properties files trong Spring sử dụng đối tượng PropertyPlaceholderConfigure, namespace util hay namespace context. Vậy làm thế nào để sử dụng những properties này trong tập tin cấu hình của Spring? Trong bài viết này, mình sẽ hướng dẫn các bạn làm điều đó!
Trước tiên, mình sẽ tạo một Maven project mới để làm ví dụ:
- Spring framework dependency:
<dependency <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.9.RELEASE</version> </dependency>
- HelloWorld class:
package com.huongdanjava.springusingpropertiesinspringxml; public class HelloWorld { private String name; public void print() { System.out.print("Hello " + name); } public String getName() { return name; } public void setName(String name) { this.name = name; } }
- Application class:
package com.huongdanjava.springusingpropertiesinspringxml; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Application { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld"); helloWorld.print(); } }
- configuration.properties
name=Khanh
- spring.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" <context:property-placeholder location="classpath:configuration.properties" /> </beans>
Ở đây, mình đã khai báo sử dụng namespace context để đọc file configuration.properties.
Để sử dụng các properties trong tập tin cấu hình của Spring, chúng ta cần khai báo các properties này với cú pháp như sau:
${property_name}
Với khai báo này, Spring sẽ tự động ingest giá trị của property vào trong các bean mà chúng ta khai báo trong tập tin cấu hình của Spring.
Ví dụ bây giờ, mình sẽ khai báo bean cho đối tượng HelloWorld trong tập tin cấu hình của Spring với thuộc tính name của đối tượng này lấy từ property name trong tập tin configuration.properties, như sau:
<bean id="helloWorld" class="com.huongdanjava.springusingpropertiesinspringxml.HelloWorld"> <property name="name" value="${name}" /> </bean>
Kết quả:
Các bạn hãy chú ý là: nếu một property được khai báo trong nhiều tập tin properties thì giá trị cuối cùng của property đó sẽ là giá trị nằm trong tập tin properties được khai báo sau cùng nhất.
Giả sử bây giờ mình thêm một tập tin properties nữa tên là configuration-override.properties
với nội dung như sau:
name=Huong Dan Java
và khai báo sử dụng tập tin này trong namespace context:
<context:property-placeholder location="classpath:configuration.properties,classpath:configuration-override.properties" />
thì khi chạy, kết quả sẽ như sau:
Bài viết gốc được đăng tải tại huongdanjava.com
Có thể bạn quan tâm:
- Lập trình theo kiểu Aspect Oriented Programming (AOP) sử dụng Spring Framework
- Sử dụng lệnh printf hiển thị câu chào ra màn hình
- Tạo hiệu ứng trong react với React Spring
Xem thêm Việc làm Developer hấp dẫn trên TopDev