Auto component scan trong Spring

Ngoài cách khởi tạo bean trong khung chứa của Spring sử dụng tập tin XML hoặc sử dụng annotation @Configuration, chúng ta còn có thể khởi tạo bean bằng cách sử dụng cơ chế auto component scan của Spring. Cụ thể cách này như thế nào, mình sẽ nói cho các bạn biết trong bài viết này nhé!

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

Auto component scan trong Spring

Tiếp theo, mình sẽ thêm Spring dependency vào tập tin pom.xml như sau:

Bây giờ, mình sẽ thêm một class mới HelloWorld nằm trong package com.huongdanjava.springcomponentscan:

Auto component scan trong Spring

với nội dung như sau:

Để sử dụng cơ chế auto component scan trong Spring, có 2 bước chúng ta cần phải làm như sau:

Bước thứ nhất, chúng ta phải khai báo một thẻ context:component-scan trong tập tin cấu hình của Spring.

Auto component scan trong Spring

Trong thẻ này, chúng ta có một thuộc tính tên là base-package. Khai báo tên package có chứa đối tượng mà chúng ta cần khởi tạo bean trong khung chứa của Spring vào thuộc tính này, Spring sẽ giúp ta tự động làm điều đó.

Trong ví dụ của mình, mình muốn Spring khởi tạo bean cho đối tượng HelloWorld một cách tự động thì mình sẽ khai báo thẻ context:component-scan như sau:

Bước thứ hai, chúng ta cần làm đó là thêm một trong số những annotation sau vào đối tượng mà chúng ta muốn Spring tự động khởi tạo bean.

Các annotation đó là: @Component, @Repository, @Service và @Controller. Mỗi annotation có ý nghĩa khác nhau như sau:

– @Component: dùng cho những đối tượng không liên quan đến database, business logic hay presentation layer.

– @Repository: dùng cho những đối tượng liên quan đến database layer.

– @Service: dùng cho những đối tượng liên quan đến business logic layer.

– @Controller: dùng cho những đối tượng liên quan đến presentation layer.

Thật ra, bạn có thể sử dụng những annotation trên cho bất kỳ đối tượng nào. Nhưng để làm rõ hơn về mặt ngữ nghĩa cho từng đối tượng, các bạn nên sử dụng chúng cho phù hợp với mục đích.

Trong ví dụ của mình, đối tượng HelloWorld không liên quan gì đến database, business logic hay presentation layer nên mình sẽ sử dụng annotation @Component như sau:

OK, xong rồi đó các bạn. Id của bean chính là tên của class với kí tự đầu là chữ thường nhé các bạn.

Bây giờ chúng ta thử chạy ví dụ này xem sao!

Kết quả:

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

6 thoughts on “Auto component scan trong Spring

  1. Mình thêm annotation @Bean cho những database, business logic hay presentation layer được k anh?.
    Những annotation anh kể trên khác @Bean ở điểm nào anh?

  2. Câu này:” Bây giờ, mình sẽ thêm một đối tượng mới HelloWorld nằm trong package com.huongdanjava.springcomponentscan:” em thấy anh nên đổi thêm một “đối tượng” thành “class” thì sẽ hay hơn. cảm ơn anh vì những chia sẻ rất bổ ích.

Add Comment