Thứ Ba, 1 tháng 3, 2016

HƯỚNG DẪN JAVA

Bean autowiring trong mùa xuân là gì?

Bản chất of Xuân is created the objects trong khung store of it for on các bạn cần thì có thể gọi to objects you need. Vì thế, mùa xuân tìm mọi cách to support for us be created the object trong khung store of it one cách dễ dàng nhất.
Us known cách khai báo to give the object to the objects khác, hay possible nói is give the object depends on the object bị phụ thuộc, bằng cách sử dụng thuộc tính ref, idref, danh sách ...  Ngoài ra, mùa xuân còn hỗ trợ we give the object depends on the object bị phụ thuộc one cách tự động bằng cách sử dụng Bean Autowiring of it.
With the Bean Autowiring, chung ta ko needs to use thuộc tính ref , idref hay danh sách,  which chỉ cần viết đang Tuân thủ theo quy tắc of mùa xuân thì đối tượng phụ thuộc will automatically be given to the object bị phụ thuộc.
Có ba cách to use Bean Autowiring, which is:
  • bằng tên
  • byType
  • constructor
Để các bạn có thể hiểu rõ hơn, mình sẽ làm một ví dụ nhé! Trong ví dụ này mình sẽ yêu cầu Spring tự động đưa đối tượng Table vào đối tượng Room của mình. Cụ thể như sau:
bean-autowiring-trong-spring-la-gi-1
Và khai báo đối tượng Table và Room trong tập tin cấu hình của Spring
 
id="room" class="com.huongdanjava.springexample.Room">
OK, giờ mình sẽ đi lần lượt từng cách một và nói cho các bạn biết cụ thể về nó nhé!

byName

Như các bạn đã biết, mỗi bean trong khung chứa của Spring đều có 1 id của riêng nó. Dựa vào điều này, Spring quy định nếu id của đối tượng phụ thuộc (trong ví dụ của mình là đối tượng Table) giống với tên một biến nào đó trong đối tượng bị phụ thuộc (đối tượng Room) và khi khai báo đối tượng bị phụ thuộc, chúng ta khai báo thêm thuộc tính autowire=”byName” thì Spring sẽ tự động đưa đối tượng phụ thuộc vào đối tượng bị phụ thuộc qua phương thức setter của đối tượng bị phụ thuộc.
Trong ví dụ của mình, id của đối tượng Table đã hoàn toàn giống với tên biến table trong đối tượng Room, do đó chúng ta chỉ cần khai báo thêm cho bean room thuộc tínhautowire=”byName” thì Spring sẽ tự động đưa đối tượng Table vào đối tượng Room cho chúng ta.
Cấu hình của đối tượng Room sẽ sửa lại như sau
Khi chạy, chương trình sẽ cho ra kết quả như sau:
Cách này có bất lợi ở chỗ nếu sau này chúng ta thay đổi tên biến của đối tượng bị phụ thuộc, lại phải đi đổi lại tên id của đối tượng phụ thuộc trong khung chứa của Spring và ngược lại. Các bạn hình dung được chứ nhỉ?

byType

Cách này chúng ta chỉ áp dụng được với những project nhỏ khi mà mỗi đối tượng chỉ có một bean duy nhất trong khung chứa của Spring. Khi đó bằng cách thay đổi thuộc tính autowire=”byType” khi khai báo một bean, Spring sẽ tự động đưa đối tượng phụ thuộc vào đối tượng bị phụ thuộc cũng qua phương thức setter của đối tượng bị phụ thuộc.
Kết quả
Nếu các bạn cố tình khai báo thêm một bean khác của đối tượng phụ thuộc như sau
 
id="table1" class="com.huongdanjava.springexample.Table">
  name="code" value="123456" />
 
id="room" class="com.huongdanjava.springexample.Room">
Thì khi chạy sẽ gặp lỗi

constructor

Giống như thuộc tính autowire=”byType”, cách này chúng ta cũng chỉ áp dụng khi đối tượng của chúng ta chỉ có một bean duy nhất trong khung chứa của Spring. Khi đó, Spring sẽ tự động đưa đối tượng phụ thuộc vào đối tượng bị phụ thuộc qua constructor của đối tượng bị phụ thuộc.
Ví dụ, chúng ta thay đổi cấu hình của bean room như sau
Kết quả

0 nhận xét: