私はアプリケーションを開発し、クラウドファウンドリに展開しています。内部的には、私たちのチームによって開発された3つのカスタム依存関係があります。スプリングブートを使用して非実行ライブラリ(jar)を作成するにはどうすればよいですか?
3つの依存関係はすべてブートプロジェクトであり、いずれも@Configuration
です。
- 依存関係1は、Couchbaseと対話することです。この依存関係の原因はブートプロジェクトです。
- 依存関係2は、ログのためにFluentDと対話することです。この依存関係の原因はブートプロジェクトです。
- 依存関係3は外部レストサービスと対話することです。この依存関係の原因はブートプロジェクトです。
- 依存関係4は、上記の3つの依存関係をすべて持ち、utilとクラスと定数もほとんどありません。
私はこの依存関係4をWebMVCの実装を持つ複数のWebアプリケーションで使用しています。
ローカルマシンですべて正常に動作しています。しかし、私はクラウド上でこのWebアプリケーションをプッシュしているときに、ライブラリが断続的に私のアプリケーションをクラッシュさせているWebアプリケーションの前に実行されることがあります。良いことアプリは数秒で回復しています。
私は自分のライブラリ(jars/dependencies)以下で変更を加え、クラウドで試しました。これらの変更を行った後、アプリのクラッシュの割合は減少しますが、残念ながら時々クラッシュすることがあり、アプリケーションの前に依存関係が実行されることがあります。ライブラリのbuild.gradleで
- 追加bootRepackage.enabled = falseをbootRepackage.withJarTask =瓶
- は、ライブラリから離陸し、私のWebアプリケーション springBoot { mainClass = "com.java.Application" 実行ファイルに追加します= true }
- ライブラリ(依存関係/ jars)から
@SpringBootApplication
を取り出しました。それは今、私のWebアプリケーションの中だけです。
これは、ブート依存関係を実行不能にする唯一の手順ではないか、私は他の何かをしなければならないでしょう。私が何かを見逃している場合は、私に知らせてください。
私の依存関係のサンプルアプリケーションクラスです。
import org.springframework.context.annotation.ComponentScan;
@ComponentScan
public class LoggingApplication {
}
Sample of Web application main class.
@SpringBootApplication
@EnableWebMvc
@Import(LoggingApplication.class)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
「ウェブアプリケーションの前にライブラリが実行されることがあります」とはどういう意味ですか?ライブラリは実際に何かを実行することは想定されていません。 –
そして、正直言って、彼らが本格的なアプリケーションではない内部の依存関係ならば、なぜあなたはSpring Bootを使用していますか?通常のSpring Frameworkで十分です。 – rorschach