- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在为多个客户端编写 Java API,并且在内部希望使用 Spring 及其多个功能,但我不想向客户端公开我的依赖项。
Điều này có thể thực hiện được không?
因此,如果我的客户使用不同版本的 spring,它们是否会与我的内部 Spring 依赖项隔离。
如果是这样,我的 spring 依赖项会在我的 jar 内部捆绑吗?以及我的客户端应用程序是否需要自定义类加载器?
我听说您可以通过 OSGI 包使用它,但我想知道这是否能满足我的要求。
我的 API 的客户端不会启用 OSGI,或者我们当前没有使用 OSGI 包的环境。
câu trả lời hay nhất
这样做并不可行,也不可取。为什么要“隐藏”依赖项?您是否还想隐藏对您可能使用的任何日志记录包的依赖(例如)?
如果您的实现中有依赖项,那么最好将它们发布,因为这会大大减少 API 用户的痛苦,因为他们甚至在尝试使用您的代码之前就会知道可能存在哪些冲突。
不要忘记,您的用户实际上是开发人员,我相信他们宁愿预先了解任何地雷或要求。
编辑 - 关于 OSGi:
OSGi 肯定会处理您的冲突依赖项问题,但它也将依赖于在 OSGi 环境中进行部署,您没有提到您的客户就是这种情况。此外,仍然不建议将那些依赖项“隐藏”在一个包中。 OSGi 的本质允许这些相互冲突的依赖关系共存于同一应用程序中。
关于java - 在不向客户端应用程序公开依赖项的情况下使用 Spring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7324589/
Tôi mới làm quen với Java và đây là mã của tôi, if( a.name == b.name && a.displayname == b.displayname && a.linknam
Trong kịch bản bên dưới, tôi có giá trị bool. Dựa trên kết quả, tôi gọi hàm giống hệt nhau, điểm khác biệt duy nhất là số lượng tham số. var myBoolean = ... if (myBoolean) { lấy
Tôi là nhà phát triển C đang làm việc trên C++: Tôi có hiểu chính xác rằng nếu tôi ném một ngoại lệ thì ngăn xếp sẽ thư giãn cho đến khi tìm thấy trình xử lý ngoại lệ đầu tiên không? Có thể mở trình gỡ lỗi trong bất kỳ lần ném nào mà không cần gỡ bỏ (tức là không rời khỏi phạm vi được khai báo hoặc bất kỳ phạm vi nào cao hơn không?
Trong khi sửa một lỗi trong một cơ sở mã khổng lồ, tôi đã quan sát thấy một tình huống kỳ lạ trong đó loại tham chiếu động đã bị thay đổi từ loại Có nguồn gốc thành loại Cơ sở. Tôi đã cung cấp mã tối thiểu để giải thích vấn đề: struct Base { // some
Tôi đang cố gắng mở rộng một mã nhất định trong C# nhưng tôi hơi khó khăn do thiếu kinh nghiệm lập trình. Sử dụng Cộng đồng Visual Studio, tôi đã thử đọc nhiệt độ lõi CPU thông qua bảng điều khiển. Mã sử dụng công tắc/vỏ để tìm tên cụ thể của cảm biến (tức là.
Đây có thể là một câu hỏi triết học. Giả sử bạn đang thực hiện một yêu cầu AJAX tới trang (đây là sử dụng Prototype): new Ajax.Request('target.asp', { Method:"post", pa
Tôi có mã HTML sau mà tôi không làm việc được trên tất cả các trình duyệt: Tôi đang cố gắng chuyển sang
Tôi rất mới với Swift. Làm cách nào tôi có thể truy xuất nhận xét từ hàm addPin và có thể sử dụng nhận xét đó trong hành động addLocation của mình (buttonPressed). Tôi đang cố gắng sử dụng cảm ứng áp lực để thêm ghim trên bản đồ, giữa hai
Tôi đã thiết lập Chế độ xem chi tiết trong đó tôi tải một số tệp Nib dựa trên mục được chọn trong bảng của Trình điều khiển chế độ xem gốc. Tôi thấy rằng đối với các lớp của Nibs, viewDidUnloa không bao giờ được gọi
Tôi cần truy cập tệp json một cách linh hoạt và sử dụng đoạn mã sau. Trong ví dụ này, "bpicsel" và "temp" là các biến. Kết quả cuối cùng trông giống như "data[0].extit1" var title="data["+bpicsel+"]
Tôi cần sử dụng dịch vụ WCF của bên thứ ba. Tôi đã định cấu hình các chứng chỉ cần thiết trong kho chứng chỉ của mình nhưng tôi gặp phải ngoại lệ sau khi gọi dịch vụ WCF. Tới https://XXXX.com/AHSharedServices/Custome
Trong một số câu trả lời SO (1, 2), người ta đề xuất rằng không nên kích hoạt trình kích hoạt INSERT nếu có xung đột, TRÊN XUNG ĐỘT KHÔNG LÀM GÌ trong câu lệnh kích hoạt. Có thể tôi hiểu sai, nhưng điều đó dường như không đúng trong các thí nghiệm của tôi. Đây là S của tôi
Nếu được sửa đổi, nó sẽ mang lại ngoại lệ org.hibernate.NonUniqueObjectException. Trong lớp BidderBO của tôi @Override @Transactional(pr
Tôi sử dụng phương thức indexOf() để tìm các đối tượng trong một mảng một cách tinh vi. Cho đến bây giờ tôi đã kiểm tra một số thông tin và thấy rằng mã không hoạt động bình thường. Tôi đã thử đoạn mã trên trong bộ giảm tốc và nó đã hoạt động let tmp = state.find
Giả sử tôi có bảng sau: TẠO BẢNG trò chơi ( GameID INT UNSIGNED NOT NULL, GameType TINYINT UNSIGNED NOT NU
Nguồn: Alamofire.request(URL(string: imageUrl)!).downloadProgress(closure: { (progress) in
Tôi là một lập trình viên xuất sắc, rất giỏi!