2012-02-01 14 views
21

Tôi có hai câu hỏi liên quan đến classpath: tùy chọn trong mùa xuân: -sử dụng classpath: vào mùa xuân

1) Liệu classpath: tìm kiếm tài nguyên liên quan đến các tài liệu mà nó được quy định (trong trường hợp của các ứng dụng web)?

Giả sử tôi sử dụng như sau:

<bean class="mybean"> 
<property name="myresource" value="classpath:myfile.txt"/> 
</bean> 

trong myconfig.xml dưới /WEB-INF/classes/config/myconfig.xml. Sau đó, từ nơi nó sẽ bắt đầu tìm kiếm của nó?

2) Là nó nhanh hơn để tìm kiếm nếu tôi cho vị trí trực tiếp của tài nguyên thay vì đưa ra classpath: tức

<bean class="mybean"> 
<property name="myresource" value="classpath:/WEB-INF/classes/myfolder/myfile.txt"/> 
</bean> 

thay vì

<bean class="mybean"> 
<property name="myresource" value="classpath:myfile.txt"/> 
</bean> 

Thanks ...

Trả lời

13

classpath: tìm kiếm tài nguyên liên quan đến tài liệu mà nó được chỉ định (trong trường hợp ứng dụng web không ns)?

Không, classpath: luôn luôn liên quan đến gốc đường dẫn lớp. Nếu bạn đặt / ở đầu đường dẫn, nó sẽ bị xóa một cách âm thầm.

Tìm kiếm trực tiếp tài nguyên trực tiếp có nhanh hơn không, ví dụ: classpath:/WEB-INF/classes/myfolder/myfile.txt

Không, điều đó sẽ không hoạt động chút nào. Đường dẫn lớp gốc chứa /WEB-INF/classes, vì vậy đường dẫn phải liên quan đến điều đó.

Đừng nhầm lẫn classpath: đường dẫn có đường dẫn tệp, chúng không có liên quan với nhau.

3

Hãy xem http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/resources.html#resources-classpath-wildcards

tiền tố đặc biệt này quy định rằng tất cả các nguồn lực classpath phù hợp với tên được đặt phải được lấy (trong nội bộ, điều này chủ yếu xảy ra qua một ClassLoader.getResources (...) cuộc gọi), và sau đó sáp nhập để tạo thành định nghĩa ngữ cảnh ứng dụng cuối cùng.

Vì vậy, classpath: bắt đầu ở gốc đường dẫn lớp của bạn.