Khi chuyển sang mùa xuân 2.5.x tôi thấy rằng điều ấy tăng thêm chú thích khuôn mẫu (trên đầu trang của @Repository từ 2.0): @Component, @Service và @Controller. Làm thế nào để bạn sử dụng chúng? Bạn có dựa vào hỗ trợ Spring ẩn hoặc bạn định nghĩa các khuôn mẫu/khía cạnh/tính năng tùy chỉnh cụ thể? Hoặc là nó chủ yếu để đánh dấu đậu (thời gian biên dịch, khái niệm, vv)?Bạn sử dụng chú thích định dạng trong Spring 2.5.x như thế nào?
Trả lời
Các chú thích khuôn mẫu sau trong 2.5 có thể được sử dụng trong một ứng dụng Spring MVC là một thay thế cho dây đậu trong XML:
@Repository - cho đậu DAO - cho phép bạn ném DataAccessException khi nguồn dữ liệu không có sẵn.
@Service - cho các hạt kinh doanh - là các hạt khá đơn giản có một số chính sách lưu giữ mặc định là .
@Controller - cho servlets - cho phép bạn thiết lập yêu cầu trang ánh xạ vv
Bên cạnh đó, một chú thích thứ tư chung đã được giới thiệu: @Component. Tất cả các chú thích MVC là các chuyên ngành của chú thích này và thậm chí bạn có thể sử dụng @Component trên chính nó, mặc dù bằng cách thực hiện điều này trong Spring MVC, bạn sẽ không sử dụng bất kỳ tính năng/tối ưu hóa nào trong tương lai được thêm vào chú thích cấp cao hơn. Bạn cũng có thể mở rộng @Component để tạo các khuôn mẫu tùy chỉnh của riêng bạn.
Dưới đây là một ví dụ nhanh chóng của các chú thích MVC trong hành động ... Thứ nhất, đối tượng truy cập dữ liệu:
@Repository
public class DatabaseDAO {
@Autowired
private SimpleJdbcTemplate jdbcTemplate;
public List<String> getAllRecords() {
return jdbcTemplate.queryForObject("select record from my_table", List.class);
}
}
Các dịch vụ:
@Service
public class DataService {
@Autowired
private DatabaseDAO database;
public List<String> getDataAsList() {
List<String> out = database.getAllRecords();
out.add("Create New...");
return out;
}
}
Và cuối cùng, bộ điều khiển:
@Controller("/index.html")
public class IndexController {
@Autowired
private DataService dataService;
@RequestMapping(method = RequestMethod.GET)
public String doGet(ModelMap modelMap) {
modelMap.put(dataService.getDataAsList());
return "index";
}
}
Tôi đã tìm thấy this article rất tốt để đưa ra một cái nhìn tổng quan rộng về khuôn mẫu anno tations, ngoài các official documentation.
bạn sẽ nói rằng các khuôn mẫu (2.5) mới chỉ áp dụng cho Spring MVC? – topchef
Ba chú thích cấp cao có thể được xem dưới dạng MVC cụ thể.Bạn có thể tái sử dụng chúng cho các mục đích khác, nhưng bạn có thể bị lỗi các vấn đề nâng cấp nếu chúng được thay đổi trong các bản phát hành trong tương lai. @Component là chú thích kết nối chung của bean, và có thể dễ dàng được mở rộng và sử dụng ngoài phạm vi MVC. – seanhodges
không quên thêm thẻ này trên xml
<context:component-scan base-package="com.example.beans"/>
Các chú thích không MVC cụ thể nữa. Xem reference documentation để biết thêm thông tin. Ví dụ về việc sử dụng chú thích @Component hoặc đặc điểm kỹ thuật của nó là tcServer với sự hỗ trợ giám sát của nó. Xem here để biết ví dụ. Hỗ trợ giám sát này được thêm vào với thời gian tải AspectJ dệt.
Tóm tắt, các chú thích có thể được sử dụng trong các cài đặt khác nhau khi chạy sau khi vùng chứa Spring được bắt đầu, hoặc khi biên dịch/tải thời gian với dệt AspectJ.
Điều này không hoàn toàn đúng. Chú thích @Component không phải là MVC cụ thể, nhưng những người khác được liệt kê trong câu hỏi của OP là tất cả các MVC cụ thể. – seanhodges
seanhodges: Không, @Repository, @Controller và @Service đều thuộc về mô-đun org.springframework.context. @Endpoint cũng là một chuyên ngành của @Component là Spring WS cụ thể và là một phần của mô-đun org.springframework.ws.java5. Đoạn trích từ tài liệu tham khảo Spring 3 (không phải MVC cụ thể): Trong Spring 2.0 trở lên, chú thích @Repository là dấu hiệu cho bất kỳ lớp nào đáp ứng vai trò hoặc khuôn mẫu (còn được gọi là Đối tượng truy cập dữ liệu hoặc DAO) của một kho lưu trữ. Trong số các công dụng của điểm đánh dấu này là bản dịch tự động của các ngoại lệ. – Espen
- 1. Truy cập HttpServletRequest từ lời khuyên AOP trong Spring 2.5 với chú thích
- 2. Mocking Spring MVC BindingResult khi sử dụng chú thích
- 3. @RequestMapping chú thích trong Spring MVC
- 4. Ứng dụng bảng điều khiển Spring được định cấu hình bằng cách sử dụng chú thích
- 5. Khuyến nghị sử dụng chú thích @Required của Spring
- 6. Chú thích @Nam trong Spring MVC
- 7. Chú thích và trục định dạng trong Biểu đồ Google
- 8. Chú thích @RequestBody và @ResponseBody trong Spring
- 9. Cách định cấu hình Jersey bằng Spring chỉ sử dụng chú thích
- 10. Testing Spring MVC chú thích mapppings
- 11. Bạn có sử dụng chú thích Java không?
- 12. Chú thích của người dùng hoạt động như thế nào?
- 13. Chú thích hữu ích như thế nào trong PHP?
- 14. Bạn sử dụng JSTL như thế nào?
- 15. @ Chú thích được tạo, chúng tôi sử dụng nó như thế nào?
- 16. Không thể đặt định dạng datetime trong MVC 4 sử dụng chú thích dữ liệu
- 17. Chú thích là gì và chúng thực sự hoạt động như thế nào cho các khung công tác như Spring?
- 18. Bạn sử dụng gdb như thế nào?
- 19. Chú thích @SpringBean của Wicket hoạt động như thế nào?
- 20. Tôi có thể sử dụng chú thích kiểu đóng bằng Aptana như thế nào?
- 21. Sử dụng chú thích Spring để tự động áp dụng Interceptor Hibernate?
- 22. Bản đồ Spring HandlerInterceptor với chú thích
- 23. Bạn định dạng DateTime theo định dạng quốc tế như thế nào?
- 24. Dịch vụ REST: cách chỉ định chú thíchMethod mà không sử dụng chú thích
- 25. Làm cách nào để xác định bean Spring bằng chú thích thay vì XML?
- 26. Cách tạo và sử dụng chú thích tùy chỉnh có chú thích cấu hình Spring + JUnit Test Config?
- 27. Bạn sử dụng cờ bitwise trong C++ như thế nào?
- 28. Các chú thích Java này hoạt động như thế nào?
- 29. Bong bóng chú thích tùy chỉnh MKPinAnnotation tương tự như bong bóng chú thích mặc định
- 30. Hiểu việc sử dụng các chú thích @ModelAttribute và @RequestAttribute trong Spring MVC
Ngữ nghĩa của các chú thích khuôn mẫu khác nhau được ghi lại trong javadoc. – skaffman