2016-03-04 27 views
10

Khi được hướng dẫn theo tên của chuỗi, tôi muốn tạo thư viện JAVA bằng cách sử dụng Khởi động mùa xuân. Tôi đã tìm thấy chủ đề này: Creating a library jar using Spring boot. Tuy nhiên, các mục tiêu của luồng đó dường như được giải quyết bằng cách thực hiện nó như một API REST.Chúng ta có thể triển khai một thư viện Java bằng cách sử dụng Spring Boot không?

Hiện tại, tôi đang phát triển thư viện JAVA dựa trên Spring bằng cách sử dụng Khởi động mùa xuân. Và, tôi đã cố gắng đóng gói như một tệp jar và cho phép một ứng dụng JAVA khác sử dụng nó trong thư viện JAVA. Thật không may, tôi thấy rằng khi ứng dụng người gọi gọi một số phương thức của thư viện được thêm, cấu hình được xác định bên trong thư viện không hoạt động ở tất cả. Nó cũng hiển thị lỗi như "CommandLineRunner không tồn tại".

Để biết thêm thông tin, một đoạn trích của tệp pom.xml được hiển thị bên dưới. Theo cấu hình, tôi không bao gồm các phụ thuộc cho các ứng dụng web.

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.3.3.RELEASE</version> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.assertj</groupId> 
     <artifactId>assertj-core</artifactId> 
     <version>2.3.0</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

Trả lời

10

Khi thiết kế theo đúng cách này không phải là một vấn đề gì cả. Nhưng chi tiết nó phụ thuộc vào các tính năng bạn đang sử dụng. Vì Spring hỗ trợ thư viện bên ngoài như JPA, Websocket, ..

Có hai chú thích quan trọng để phát triển thư viện và sử dụng nó trong một dự án khác.

Đầu tiên chỉ đơn giản là @Configuration và cái kia là @Import.

Dự án Thư viện

Đặt một lớp trong gói gốc mà trông giống như thế này.

@Configuration // allows to import this class 
@ComponentScan // Scan for beans and other configuration classes 
public class SomeLibrary { 
    // no main needed here 
} 

dự án khác sử dụng thư viện

Như thường đặt một lớp trong gói thư mục gốc của dự án của bạn.

@SpringBootApplication 
@Import(SomeLibrary.class) // import the library 
public class OtherApplication { 
    // just put your standard main in this class 
} 

Điều quan trọng cần lưu ý là những thứ khác có thể cần thiết tùy thuộc vào những gì bạn sử dụng trong các khuôn khổ khác. Ví dụ: nếu bạn sử dụng chú thích mùa xuân-dữ liệu, chú thích @EntityScan sẽ mở rộng quá trình quét ngủ đông.

+0

Cảm ơn bạn rất nhiều vì đã giải thích rõ ràng. Vì vậy, theo đề xuất của bạn, ** dự án khác ** cũng được yêu cầu là ** ứng dụng dựa trên Spring **? Ngoài ra, nếu có thể, bạn có thể sửa ví dụ của bạn vì hai lớp đó có cùng tên không? – xlives

+0

Lỗi được sửa là lỗi dán bản sao. Nếu bạn thực hiện theo cách đó, ứng dụng "khác" là ứng dụng mùa xuân. Có thể tạo ra một số loại thư viện tự thân, nhưng điều này phức tạp và khó giải thích hơn trong một bài đăng Stackoverflow. (Tôi sẽ tránh phương pháp này) –

+0

Cảm ơn bạn. Có lẽ, tôi có thể hỏi bạn giải pháp qua các kênh khác như email sau. Giả sử rằng tôi sẽ thực hiện cả việc tạo dự án thư viện và dự án khác dưới dạng ứng dụng Khởi động mùa xuân. Sau đó, làm thế nào tôi có thể thêm jar thư viện vào ** dự án khác **? – xlives

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