Inject đối tượng này vào đối tượng khác trong Spring sử dụng tập tin XML

Inject đối tượng này vào đối tượng khác trong Spring thực sự rất phổ biến khi các bạn làm việc với các dự án có sử dụng Spring framework. Trong bài viết trước mình đã đề cập đến thuộc tính ref của Spring để đưa đối tượng Shape vào đối tượng Drawing, trong bài viết này mình sẽ nói thêm một số cách khai báo khác để inject đối tượng này vào đối tượng khác trong Spring sử dụng tập tin XML, các bạn nhé!

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

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

Spring dependency như sau:

OK, bây giờ giả sử mình có một lớp học, lớp học này sẽ bao gồm một hoặc nhiều sinh viên, cụ thể như sau:

Giờ chúng ta sẽ xem xét trường hợp đầu tiên nhé các bạn. Mình sẽ tạo một lớp học chỉ có một sinh viên duy nhất bằng cách đưa đối tượng sinh viên A vào trong đối tượng Clazz. Thông thường, chúng ta sẽ khởi tạo như sau:

Nếu đối tượng sinh viên A của chúng ta có khai báo một tên gọi, chúng ta cũng có thể sử dụng nó với thuộc tính ref của Spring.

Ngoài ra, chúng ta còn 1 cách khác nữa để khai báo:

Đối tượng sinh viên A được tạo ra như thế này được gọi là Inner Bean, id của bean trong trường hợp này không quan trọng, Spring không quan tâm đến nó nhé các bạn.

Các bạn chỉ nên áp dụng trong trường hợp đặc biệt nào đó, ngoài ra theo mình nghĩ thì không nên dùng. Spring nó hỗ trợ nên mình chỉ muốn nói ra cho các bạn biết.

Code để kiểm tra:

Kết quả:

OK, giờ mình sẽ nói đến trường hợp thứ hai. Chúng ta sẽ tạo một lớp học với một danh sách các sinh viên. Mình sẽ tạo ba sinh viên A, B, C và đưa chúng vào đối tượng Clazz. Cụ thể như sau:

Code để kiểm tra:

Kết quả:

5/5 - (1 bình chọn)

15 thoughts on “Inject đối tượng này vào đối tượng khác trong Spring sử dụng tập tin XML

  1. Ở cách thứ 3 dùng idref không biết chỗ này có sai sót gì không nhỉ. Code bean chỗ này mình để là :

    Nhưng lại chạy ra kết quả là:
    Student [name=studenta, age=0]

  2. E có chút chưa hiểu ở class Student có 2 thuộc tính String name và int age, khi khởi tạo bean trong file XML a sử dụng thẻ thì sẽ set đc giá trị cho name là “a” vậy còn giá trị age thì mình set như thế nào và thẻ chỉ set giá trị đầu tiên thôi ạ? nếu có 2 giá trị đều thuộc kiểu string thì sẽ như thế nào ? Mong a giải đáp giúp e :))

  3. Series tuyệt vời!

    Cám ơn chủ blog đã có những bài viết tuyệt vời! Minh đã kiếm tài liệu về Spring mấy ngày nay chỉ có mỗi nội dung ở đây vừa dễ đọc vừa đầy đủ rõ ràng.

    1. Nếu có n sinh viên thì mình cũng tạo n bean, mỗi bean chứa thông tin sinh viên khác nhau. Sau đó mình thêm vào giống như trường hợp thứ hai đó Quân.

        1. có cách nào để đưa 1 danh sách sinh viên có sẵn vào bean k ạ, chứ nếu sinh viên quá nhiều mà ta nhập vào thì hơi lâu đấy a.

          1. Nếu mà sinh viên quá nhiều, thì mình cần 1 cách khác để giải quyết, ví dụ mình sẽ dùng file properties để lưu danh sách sinh viên, sau đó sẽ viết lại code để có thể tạo bean từ danh sách sinh viên đó. Hoặc mình cũng có thể dùng database để lưu danh sách sinh viên cũng được. Cái này tùy theo nhu cầu của em thôi.

Add Comment