Đọc properties files trong Spring sử dụng annotation @PropertySource

Mình đã giới thiệu với các bạn cách đọc properties file trong Spring sử dụng đối tượng PropertyPlaceholderConfigurer, namespace util, namespace context. Tất cả các cách trên, chúng ta đều cần phải khai báo trong tập tin cấu hình của Spring. Trong bài viết này, mình giới thiệu với các bạn một cách nữa để đọc properties file trong Spring: đó chính là sử dụng annotation @PropertySource. Cụ thể như thế nào? Hãy đọc tiếp nhé các bạn.

Đầu tiên, mình sẽ tạo một Maven project để làm ví dụ:

Đọc properties files trong Spring sử dụng annotation @PropertySource

Mình sẽ sử dụng Java 17 cho ví dụ này:

Spring framework dependency:

Class Application có nội dung ban đầu như sau:

Class HelloWorld là class cần sử dụng properties được khai báo trong tập tin configuration.properties, nó có nội dung ban đầu như sau:

Trong ví dụ của mình thì tập tin spring.xml chính là tập tin cấu hình của Spring còn tập tin configuration.properties là tập tin cấu hình của ứng dụng. Nội dung của những tập tin này như sau:

spring.xml

configuration.properties

Bây giờ, mình sẽ sử dụng annotation @PropertySource để đọc properties trong tập tin configuration.properties lên, sau đó class HelloWorld sẽ sử dụng nhé các bạn.



Đầu tiên, chúng ta cần sử dụng chức năng auto component scan của Spring để khai báo đối tượng HelloWorld trong Spring container trước.

Để làm được điều này, chúng ta cần khai báo thẻ context:component-scan trong tập tin cấu hình của Spring với base package là com.huongdanjava.spring:

và khai báo annotation @Component trong class HelloWorld:

Bây giờ mình sẽ sử dụng annotation @PropertySource để đọc tập tin configuration.properties, bằng cách khai báo nó trong class HelloWorld như sau:

Với khai báo trên, Spring sẽ sử dụng đường dẫn là giá trị của annotation @PropertySource để tìm kiếm tập tin properties và đọc tất cả các properties có trong tập tin này lên. Trong khai báo trên của mình, mình đã sử dụng biến classpath, tương ứng với đường dẫn /src/main/resources, rồi cộng với tên tập tin.

Giờ thì chúng ta có thể sử dụng annotation @Value để inject giá trị của property “app.author” vào giá trị của thuộc tính name trong đối tượng HelloWorld rồi.

Sử dụng đối tượng HelloWorld trong ứng dụng:

các bạn sẽ thấy kết quả như sau:

Đọc properties files trong Spring sử dụng annotation @PropertySource

Annotation @PropertySource cũng hỗ trợ chúng ta ignoreResourceNotFound, để trong trường hợp tập tin properties không tồn tại thì không có lỗi gì xảy ra cả, khai báo như sau nhé các bạn:

Kết quả:

Đọc properties files trong Spring sử dụng annotation @PropertySource

Trong trường hợp các bạn có nhiều properties file cần được sử dụng trong ứng dụng của mình thì các bạn có thể sử dụng annotation @PropertySources cùng với khai báo nhiều annotation @PropertySource

Ví dụ như mình có thể một tập tin app.properties

Đọc properties files trong Spring sử dụng annotation @PropertySource

với nội dung như sau:

khi đó, mình có thể khai báo annotation @PropertySources trong class HelloWorld như sau:

Tất nhiên, property nào được khai báo sau, sẽ được sử dụng.

Kết quả:

Đọc properties files trong Spring sử dụng annotation @PropertySource

4/5 - (2 bình chọn)

Add Comment