Đậu được xác định bằng XML trong khởi động mùa xuân

1. Giới thiệu

Trước Spring 3.0, XML là cách duy nhất để định nghĩa và cấu hình các bean. Spring 3.0 đã giới thiệu JavaConfig , cho phép chúng ta cấu hình các bean bằng cách sử dụng các lớp Java. Tuy nhiên, các tệp cấu hình XML vẫn được sử dụng ngày nay.

Trong hướng dẫn này, chúng ta sẽ thảo luận về cách tích hợp các cấu hình XML vào Spring Boot .

2. Chú thích @ImportResource

Các @ImportResource chú thích cho phép chúng ta nhập một hoặc nhiều nguồn có chứa các định nghĩa bean.

Giả sử chúng ta có một tệp bean.xml với định nghĩa của một bean:

Để sử dụng nó trong ứng dụng Spring Boot, chúng ta có thể sử dụng chú thích @ImportResource , cho nó biết nơi tìm tệp cấu hình:

@Configuration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { @Autowired private Pojo pojo; public static void main(String[] args) { SpringApplication.run(SpringBootXmlApplication.class, args); } }

Trong trường hợp này, cá thể Pojo sẽ được đưa vào bean được định nghĩa trong bean.xml .

3. Truy cập thuộc tính trong cấu hình XML

Điều gì về việc sử dụng các thuộc tính trong các tệp cấu hình XML? Giả sử chúng ta muốn sử dụng thuộc tính được khai báo trong tệp application.properties của chúng ta :

sample=string loaded from properties!

Hãy cập nhật định nghĩa Pojo , trong bean.xml , để bao gồm thuộc tính mẫu :

Tiếp theo, hãy xác minh xem thuộc tính có được đưa vào đúng cách hay không:

@RunWith(SpringRunner.class) @SpringBootTest(classes = SpringBootXmlApplication.class) public class SpringBootXmlApplicationIntegrationTest { @Autowired private Pojo pojo; @Value("${sample}") private String sample; @Test public void whenCallingGetter_thenPrintingProperty() { assertThat(pojo.getField()) .isNotBlank() .isEqualTo(sample); } }

Rất tiếc, thử nghiệm này sẽ không thành công vì theo mặc định, tệp cấu hình XML không thể giải quyết các trình giữ chỗ . Tuy nhiên, chúng tôi có thể giải quyết vấn đề này bằng cách bao gồm chú thích @EnableAutoConfiguration :

@Configuration @EnableAutoConfiguration @ImportResource("classpath:beans.xml") public class SpringBootXmlApplication implements CommandLineRunner { // ... }

Chú thích này cho phép cấu hình tự động và cố gắng cấu hình bean.

4. Phương pháp tiếp cận được đề xuất

Chúng tôi có thể tiếp tục sử dụng tệp cấu hình XML. Nhưng chúng tôi cũng có thể xem xét chuyển tất cả cấu hình sang JavaConfig vì một vài lý do. Đầu tiên, việc định cấu hình bean trong Java là kiểu an toàn , vì vậy chúng tôi sẽ bắt lỗi kiểu tại thời điểm biên dịch. Ngoài ra, cấu hình XML có thể phát triển khá lớn , gây khó khăn cho việc bảo trì.

5. Kết luận

Trong bài viết này, chúng tôi đã giới thiệu cho các bạn cách sử dụng các tệp cấu hình XML để xác định các bean của chúng tôi trong ứng dụng Spring Boot. Như mọi khi, mã nguồn của ví dụ chúng tôi đã sử dụng có sẵn trên GitHub.