2012-06-18 40 views
29

Chúng tôi có một ứng dụng web mvc mùa xuân khá lớn, nơi các bộ điều khiển được chú thích với @Controller và các phương thức có @RequestMapping.spring mvc nhận tất cả các ánh xạ yêu cầu

Tôi muốn tạo ra một thử nghiệm tại đó kiểm tra mỗi url càng tốt và kiểm tra nếu giá trị trả về là 200.

Có bằng cách nào đó có thể nhận được tất cả các ánh xạ từ mùa xuân?

+2

Đây là một cách để có được tất cả ánh xạ - http://stackoverflow.com/a/10899118/204788 –

+0

cảm ơn rất nhiều. Nếu bạn trả lời, tôi sẽ chấp nhận nó. – superbly

+0

Thật tuyệt vời khi câu trả lời này giúp bạn @shifty, bây giờ tôi đã thêm nó làm câu trả lời. –

Trả lời

34

tôi sao chép một trong tôi previous answers đây:

Nếu bạn đang sử dụng Spring 3.1 phần handlerMapping đây là một thể hiện của RequestMappingHandlerMapping, mà bạn có thể truy vấn để tìm ra handlerMappedMethods và các bộ điều khiển đi kèm, cùng những dòng này (nếu bạn đang ở trên một phiên bản cũ của mùa xuân, bạn sẽ có thể sử dụng một cách tiếp cận tương tự):

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; 

@Controller 
public class EndpointDocController { 
private final RequestMappingHandlerMapping handlerMapping; 

@Autowired 
public EndpointDocController(RequestMappingHandlerMapping handlerMapping) { 
    this.handlerMapping = handlerMapping; 
} 

@RequestMapping(value="/endpointdoc", method=RequestMethod.GET) 
public void show(Model model) { 
    model.addAttribute("handlerMethods", this.handlerMapping.getHandlerMethods()); 
} 
} 

tôi đã cung cấp thêm chi tiết về vấn đề này tại url này http://biju-allandsundry.blogspot.com/2012/03/endpoint-documentation-controller-for.html

Điều này được dựa trên một bài trình bày vào mùa xuân 3.1 của Rossen Stoyanchev của Spring Source.

+1

Điều này cũng sẽ liệt kê bất kỳ ánh xạ nào được đăng ký với BeanNameUrlHandlerMapping? – user48956

+0

Khi sử dụng nhiều RequestMappingHandlerMappings (chẳng hạn như với OAuth), điều này cho biết lỗi "Không có loại bean duy nhất nào [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] được định nghĩa: bean kết hợp đơn dự kiến ​​nhưng được tìm thấy 2: [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping # 0, oauth2HandlerMapping] ". Để khắc phục, hãy đổi thành Danh sách Justin

+0

Điều này không bao gồm các điểm cuối được tạo bằng '@ FrameworkEndpoint', chỉ các điểm cuối được kết hợp với chú thích' @ Controller' và '@ RestController' – cosbor11

Các vấn đề liên quan