Nói thêm về Setter Injection trong Spring sử dụng tập tin XML

Trong bài viết trước, mình đã giới thiệu với các bạn cơ bản về Setter Injection trong Spring sử dụng tập tin XML. Trong bài viết này, mình xin đề cập về nó một cách chi tiết hơn để các bạn có thể sử dụng nó một cách dễ dàng các bạn nhé!

Hãy xem xét ví dụ sau:

Mình có class Student:

và class Clazz có nội dung như sau:

Như các bạn thấy, class Clazz của mình có chứa hai thuộc tính: một biến của đối tượng Student, một biến kiểu dữ liệu String và các phương thức Setter để gán giá trị cho các biến này. Vậy làm thế nào để chúng ta inject các đối tượng kiểu dữ liệu này vào class Clazz sử dụng các phương thức Setter này? Các bạn hãy đọc tiếp nhé!

Trước tiên, mình sẽ tạo một Maven project trước:

Class Application có nội dung như sau:

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

Spring dependency:

Ok, bắt đầu nào các bạn.

Để inject đối tượng Student vào đối tượng Clazz, trước tiên chúng ta cần khởi tạo đối tượng Student trong khung chứa của Spring trước!

Và giờ để khai báo đối tượng Clazz trong khung chứa của Spring mình sẽ khai báo như sau:

Trong khai báo cho đối tượng Clazz trên, mình đã sử dụng thẻ <property> với các cặp thuộc tính là <name, value> và <name, ref>. Trong đó:

  • Thuộc tính name là bắt buộc, nó là tên của thuộc tính mà chúng ta cần inject trong đối tượng Clazz.
  • Còn thuộc tính value hay ref thì giống như trong Constructor Injection. Thuộc tính value được sử dụng trong trường hợp giá trị inject là một giá trị text, số hoặc là boolean,… Còn thuộc tính ref thì được sử dụng để reference tới một bean khác đã được khởi tạo trong khung chứa của Spring.

Kết quả:

Ngoài ra, tương tự như Constructor Injection, Spring còn hỗ trợ chúng namespace p dùng để khai báo cho Setter Injection một cách đơn giản hơn.

Namespace này cho phép chúng ta có thể khai báo các thuộc tính của các đối tượng ngay trong thẻ <bean> dưới dạng là một thuộc tính. Nó không đi kèm một tập tin schema XSD, do đó để sử dụng namespace p, các bạn chỉ cần khai báo nó trong tập tin cấu hình XML của Spring như sau:

rồi sử dụng syntax sau để inject các đối tượng phụ thuộc.

Các bạn hãy khai báo một thuộc tính trong thẻ <bean> với name bắt đầu là “p:” tiếp theo là tên thuộc tính của đối tượng Clazz và kết thúc là “-ref” nếu đối tượng phụ thuộc là một bean khác trong khung chứa của Spring, sau đó gán cho nó một giá trị. Ví dụ mình có thể khai báo đối tượng Clazz như sau:

Kết quả:

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

5 thoughts on “Nói thêm về Setter Injection trong Spring sử dụng tập tin XML

  1. E muốn theo javaweb, ở trường e đã học được JSP, Servlet. E có được dạy thêm về framework Struts2 nhưng e thấy làm ko hợp so với mình chỉ làm bằng jsp + servlet, Nên e đã quyết định tìm hiểu Spring framework nhưng tìm hoài ko thấy tài liệu hướng dẫn hoặc rất chung chung cho đến khi tìm được đến trang web này của a. Bài hướng dẫn của a rất chi tiết và dễ hiểu, mong a ra nhiều series hay về java hơn. Nếu được e xin a tư vấn thêm về lộ trình học javaweb với Spring framework nên đi từ đâu khi đã có kiến thức về java, jsp servlet ạ, E cảm ơn a nhiều !

    1. Thanks em. Anh nghĩ nếu em đọc và hiểu hết những bài viết của anh trên Hướng Dẫn Java thì cũng đã có những kiến thức nền cơ bản và có thể làm việc được luôn đó.

Add Comment