Cách giới hạn sử dụng các annotation trong Spring MVC, Spring Boot

Hẳn là khi sử dụng các annotation trong spring thì các bạn rất quen thuộc với các chú thích như: @Autowired, @Component, @Repository, @Service…, tuy nhiên đôi khi chúng ta muốn chỉ sử dụng một số annotation trong spring với dự án của mình.

Tình huống:

Giả sử rằng project của một công ty A đang thực hiện, pattern project của công ty gồm controller, dao, service lúc này chúng ta có thể giới hạn các annotation trong dự án với các tầng trên như: controller tương ứng với @Controller, dao tương ứng với Repository và tầng sử lý logic của dự án service tương ứng v ới @Service.
Vì vậy, các annotation khác như @Component là không cần thiết.

Lý do rất đơn giản là đặt ra một rule chung cho dự án, và tránh cho việc các lập trình viên lạm dụng các annotation dư thừa, không cần thiết cho dự án.

Cách config và sử dụng như sau:

Trong file cấu hình của spring chúng ta chỉ cần làm như bên dưới:

<!-- Controller, Service, Repository auto detect mvc -->
<context:component-scan base-package="vn.edu.vinaenter.*" use-default-filters="false" >
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>

Trong đó:

base-package :  là package scan đến nơi các file java class các bạn đang sử dụng các annotation bên dưới.

use-default-filters: để loại bỏ các annotation mặc định mà spring tự động tạo ra và filter đến.

context:include-filter: chỉ đến tìm kiếm đến các annotation và hiện tại project đang scan.

Như vậy các bạn có thể thấy rằng, project hiện tại chỉ scan đến các file java nằm trong vn.edu.vinaenter và chỉ đón nhận các annotation như: Controller, Service, Repository, tất nhiên các annotation còn lại như @Component các bạn cố tình scan đến nó sẽ xảy ra exception.

Trên là ví dụ để các bạn có thể ràng buộc các annotation chỉ sử sử dụng trong dự án của mình! Chúc các bạn vui!

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x