Ý nghĩa của chú thích EnableWebMvc


77

Tôi đọc javadoc về @EnableWebMvc.

Nhưng tôi không hiểu chú thích này có ý nghĩa gì?

Bạn có thể giải thích rõ ràng không?

Câu trả lời:


101

Khi bạn đang sử dụng mã Java (trái ngược với XML) để định cấu hình ứng dụng Spring của mình, @EnableWebMvcđược sử dụng để kích hoạt Spring MVC. Nếu bạn chưa quen với việc hỗ trợ cấu hình Java của Spring, thì đây là một nơi tốt để bắt đầu .

@EnableWebMvctương đương với <mvc:annotation-driven />trong XML. Nó cho phép hỗ trợ @Controllercác lớp -annotated dùng @RequestMappingđể ánh xạ các yêu cầu đến với một phương thức nhất định. Bạn có thể đọc thông tin chi tiết về những gì nó cấu hình theo mặc định và cách tùy chỉnh cấu hình trong tài liệu tham khảo .


1
Mvc: annotation-driven là gì?
Koray Tugay

"Nó cho phép hỗ trợ cho các lớp được chú thích bởi @ Controller", là không đúng. Từ tài liệu mùa xuân,To enable auto-detection of such @Controller beans, you can add component scanning
Rich

Đúng rồi. Không có @EnableWebMvc, một @Controllerhạt đậu chỉ là một hạt đậu, không phải là một bộ điều khiển. Điều đó áp dụng cho dù nó được tìm thấy qua quét thành phần hay được đăng ký qua một @Beanphương thức.
Andy Wilkinson

50

Chào mừng đến với thế giới của mùa xuân. Có một số điều bạn cần hiểu trước khi biết ý @EnableWebMVCnghĩa của chú thích .

Spring theo truyền thống hỗ trợ hai loại cấu hình:

Các chú thích này về cơ bản được triển khai như một phần của Thiết kế cấu hình Java MVC .

Hãy xem xét một lớp đơn giản:

@EnableWebMvc
@Configuration
public class WebConfig {
}

Không có lớp cơ sở. Không có đậu mùa xuân trong tầm nhìn .. Hừm ..

Hãy đi xa hơn một chút:

  • Điều này thực sự cung cấp những gì ..?

Chà, làm bạn buồn hơn một chút, nó cung cấp rất nhiều thứ như:

  1. Xử lý yêu cầu @MVC
  2. Trình xác thực JSR-303 toàn cầu

và một số khác.

Ahahah ... Nhưng ứng dụng của bạn hoạt động đúng với nó. Vậy, điều kỳ diệu ở đâu ..?

@EnableWebMVC <---- What's behind this..?

Đây là đằng sau nó:

@Retention(RetentionPolicy.RUNTIME)
@Import(DelegatingWebMvcConfiguration.class)
@Target(ElementType.TYPE)
public @interface EnableWebMvc {
}

Xem, bây giờ bạn sẽ nghĩ rằng cách vô nghĩa sử dụng @EnableWebMVC. Bạn có muốn:

Bạn có thể đọc trên:

Hy vọng nó giúp. :)


1

Việc thêm chú thích này vào lớp @Configuration sẽ nhập cấu hình Spring MVC từ WebMvcConfigurationSupport


1

Khi chúng ta muốn xây dựng một dự án Spring Web MVC, chúng ta cần thêm nhập cần thiết từ WebMvcConfigurationSupport. Vì lý do đó, chúng ta nên sử dụng @EnableWebMvccấu hình dựa trên java. Chỉ một @Configurationlớp có thể có @EnableWebMvc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.