2011-12-22 19 views
12

Tôi có một số câu hỏi bắt nguồn từ một vấn đề mà tôi đã giải quyết thông qua this other question. Tuy nhiên, tôi vẫn tự hỏi về nguyên nhân gốc rễ. Câu hỏi của tôi là như sau:Cần hiểu về spring.handlers và spring.schemas

  1. mục đích spring.handlersspring.schemas là gì?

Vì tôi hiểu đó là cách nói cho khung công tác Spring định vị xsd sao cho mọi thứ đều có dây và được tải chính xác. Nhưng ...

  1. Trong trường hợp nào tôi nên có hai tệp đó trong thư mục META-INF?

  2. Trong câu hỏi khác của tôi được liên kết ở trên, có ai biết tại sao tôi phải thêm maven-shade-plugin để tạo hai tệp đó (dựa trên tất cả các phụ thuộc của tôi) trong META-INF không? Nói cách khác, ROOT là gì khiến tôi phải sử dụng plugin bóng maven?

Trả lời

21

Mục đích của spring.handlers và spring.schemas là gì?

tốt bạn nhiều hay ít tìm thấy nó ra một mình, chúng ta hãy thêm một số chi tiết:

một số thư viện mùa xuân chứa một spring.schemas and a spring.handlers file bên trong một thư mục META-INF

META-INF/mùa xuân. schemas

  • tái bản đồ (*) schemaLocation đến một xsd bên trong thư viện
  • (trừu tượng) phiên bản chỉ tái ánh xạ được hỗ trợ bởi thư viện này

META-INF/spring.handlers

  • cung cấp các lớp xử lý không gian tên cho không gian tên cụ thể
  • lớp handler namespace cung cấp logic của trình phân tích cú pháp để phân tích cú pháp các bean theo đợt, như công việc, bước, v.v.

(*) tái lập bản đồ thực tế xảy ra trong việc xây dựng các bối cảnh ứng dụng xuân


Trong hoàn cảnh nào tôi nên có những hai tập tin trong thư mục META-INF ?

thường các tập tin được bên trong lọ thư viện mùa xuân bạn sử dụng, nhưng bạn có thể sử dụng cơ chế để thực hiện riêng phân tích đậu namespace, sau đó bạn sẽ có các file riêng


Trong câu hỏi khác của tôi liên kết ở trên, không ai biết tại sao tôi phải thêm plugin maven-shade để tạo hai tệp đó (dựa trên tất cả phụ thuộc của tôi) theo META-INF? Nói cách khác, ROOT CAUSE là gì khiến tôi phải sử dụng plugin bóng maven?

nếu bạn sử dụng một không gian tên mùa xuân trong cấu hình mùa xuân, bạn cần các tập tin thích hợp

vấn đề nảy sinh khi bạn muốn chạy một ứng dụng java:

  • với một lớp học chính hoặc
    • thư viện mùa xuân cần phải nằm trên đường dẫn lớp
    • hoặc tất cả được hợp nhất thành một bình, trong đó có e trên classpath (*)
  • như ứng dụng máy chủ chiến tranh/tai, các libaries mùa xuân cần phải được trên classpath, thông thường bên trong chiến tranh

tôi đoán bạn không bắt đầu mainclass với hoàn thành classpath và tôi đã cập nhật số answer cho câu hỏi đầu tiên của bạn quá

(*) nếu bạn hợp nhất tất cả thành một cái bình, bạn phải đảm bảo rằng nội dung của tất cả các tệp spring.schemas/spring.handlers được hợp nhất thành một spring.schemas và một tệp spring.handlers, xem này answer for a configuration with maven to create an all-in-one.jar

+0

Cảm ơn rất nhiều, đây là những gì tôi đang tìm kiếm. – Viriato

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