2016-03-04 7 views
10

スレッドの名前に基づいて、Spring Bootを使用してJAVAライブラリを作成したいと考えています。私はこのスレッドを発見した:Creating a library jar using Spring boot。しかし、そのスレッドの目的は、REST APIとして実装することによって解決されるようです。Springブートを使用してJavaライブラリを実装できますか?

現在、Springブートを使用してSpringベースのJAVAライブラリを開発しています。そして、私はjarファイルとしてパッケージ化しようとし、別のJAVAアプリケーションにJAVAライブラリの用語でそれを使用させました。残念ながら、呼び出し元アプリケーションが追加されたライブラリのいくつかのメソッドを呼び出すと、ライブラリ内で定義されているの設定が全く機能しないことがわかりました。 「CommandLineRunnerが存在しません。」というエラーも表示されます。

詳細については、pom.xmlファイルのスニペットを以下に示します。この構成によると、私は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> 

答えて

10

これは全く問題にはならない正しい方法で設計されています。しかし詳細には、使用している機能によって異なります。 SpringはJPAやWebSocketのような外部ライブラリをサポートしているので、

のライブラリを開発し、別のプロジェクトで使うのに2つの重要なアノテーションがあります。

最初のものは単に@Configurationで、もう1つは@Importです。

ライブラリプロジェクト

は、次のようになりますルートパッケージ内のクラスを置きます。通常、プロジェクトのルートパッケージにクラスを入れライブラリ

を使用して

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

その他のプロジェクト。

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

他のフレームワークでの使用に応じて、他のことが必要な場合があります。 たとえば、スプリングデータ@EntityScanアノテーションを使用している場合、休止状態のスキャンが延長されます。

+0

ご清聴ありがとうございました。だから、あなたの提案によると、**他のプロジェクト**は** Springベースのアプリケーション**にする必要がありますか?また、可能であれば、それらの2つのクラスが同じ名前を持つため、例を修正できますか? – xlives

+0

修正された申し訳ありません、コピーの貼り付けに失敗しました。 もしあなたがそうするならば、「他の」アプリケーションも春のアプリケーションである必要があります。自己完結型ライブラリのいくつかの並べ替えを作成することは可能ですが、これは複雑で、Stackoverflowの記事で説明するのは難しいです。 (私はこのアプローチを避けるだろう) –

+0

ありがとう。おそらく、私は後で電子メールのような他のチャンネルを介してあなたに解決策を尋ねるかもしれません。 ライブラリプロジェクトと他のプロジェクトの両方をSpringブートアプリケーションとして作成することにします。次に、ライブラリジャーを**他のプロジェクト**に追加するにはどうしたらいいですか? – xlives

関連する問題