Trong Spring framework, chúng ta có nhiều cách để khởi tạo các đối tượng trong khung chứa của Spring và một trong những cách đó chính là sử dụng tập tin XML. Trong bài viết này, mình sẽ trình bày với các bạn một số điều chúng ta cần biết về tập tin XML này các bạn nhé!
Thông thường, chúng ta nên đặt tập tin cấu hình XML của Spring trong thư mục /src/main/resources.
Tập tin này sẽ là nơi chúng ta định nghĩa tất cả các đối tượng chúng ta cần để Spring khởi tạo và quản lý chúng.
Tập tin này sẽ khai báo các namespace để sử dụng các thẻ XML do đó các bạn phải tuân thủ cấu trúc của các thẻ XML được định nghĩa bởi các tập tin schema dành cho các namespace đó.
Nội dung cơ bản phải có của tập tin cấu hình của Spring sẽ như sau:
1 2 3 4 5 |
<beans xmlns="http://www.springframework.org/schema/beans" 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.xsd"> </beans> |
Như các bạn thấy, ở đây chúng ta cần định nghĩa các bean do đó chúng ta sẽ khai báo namespace cho thẻ <bean> bằng cách sử dụng schema spring-beans.xsd của Spring ở thuộc tính xsi:schemaLocation.
Trong Spring thì ứng với mỗi version sẽ có tập tin định nghĩa schema riêng cho version đó.
Nếu mình dùng Spring version 4.3.x thì Spring sẽ có schema cho version này ở http://www.springframework.org/schema/beans/spring-beans-4.3.xsd, còn đối với Spring 4.2.x thì cũng có schema cho version này ở http://www.springframework.org/schema/beans/spring-beans-4.2.xsd.
Để tránh việc phải thay đổi schema mỗi khi nâng cấp project của chúng ta lên version mới của Spring thì các bạn chỉ cần khai báo URL của schema như sau: http://www.springframework.org/schema/beans/spring-beans.xsd. Với khai báo này, mỗi khi chúng ta nâng cấp version của Spring thì schema này cũng tự động nâng cấp lên luôn.
Ngoài thẻ <bean> thì chúng ta còn nhiều thẻ khác có thể sử dụng trong tập tin cấu hình của Spring nữa. Để thêm những namespace cho những thẻ khác đó, các bạn cần khai báo chúng như là một thuộc tính trong thẻ <beans> giống như namespace “xsi” ở trên:
1 |
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
và URL của schema dành cho namespace đó ở thuộc tính schemaLocation.
Ví dụ, mình muốn sử dụng thẻ <context> trong tập tin cấu hình của Spring với URL của schema là: http://www.springframework.org/schema/context/spring-context.xsd thì mình sẽ khai báo nó như sau:
1 2 3 4 5 6 7 |
<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"> </beans> |
Các bạn có thể so sánh nội dung trước và sau khi thêm namespace cho thẻ <context> để thấy sự khác nhau nhé!