私は3つのjarファイルを持つプロジェクト構造を持っています。すべてが1つのクラスパスにロードされ、実行されます。私は春のコア、jpaと冬眠を使用しています。 @Services
/@Autowired
は、エンティティとリポジトリ(すべてmysqlデータベース上)だけでなく、正常に動作しています。スタンドアロンのjarファイルでtomcatを使用しないスプリングブート
今、プロジェクトがネットワーク/インターネット経由でメッセージを送受信できるようにしたいと考えています。だから私は現在の構造を壊すことなくこれを達成する方法を人々に尋ねました。私は春のブーツは私のためのアーキテクチャであると言われました。なぜなら私はそれにウェブサーバー(風邪やグラスフィッシュ)を必要としないからです。
しかし、私は同じことを言うソースが見つからなかったのでこれが正しいかどうかはわかりません。そのため、自分で検証するために実装しようとしました。私は私のプロジェクトに行わ
重要な変更点は、(すべてのpom.xml
ファイルと私のコンフィギュレーションクラスが)ここで見つけることができます:私が読んだものから、http://84.141.90.123:9910/
私は春ブーツ用@SpringBootApplication
注釈を必要とします。これは、@Configuration
,@ComponentScan
,@EnableAutoConfiguration
,@EnableWebMvc
と等価です。
最初の2つはすでに私の構造に入っています。しかし、私は最後の二つのアノテーションを追加したとき、私は別のエラーを取得:私は@EnableAutoConfiguration
を追加すると
私は
Caused by: java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
を取得し、私は
@EnableWebMvc
を追加すると、私はCaused by: java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling
私の悪い英語の暴言から、@EnableWebMvc
というエラーがtと思われるアプリケーションにはWebサーバー(TomcatまたはGlassfish)が必要です。
メインステートメントが間違っているため、Webサーバーなしで春の起動を開始できません。
私は春にはxmlファイルやプロパティファイルを使用しないため(動作しませんでした)、spring、jpa、hibernateのJavaコードベースの設定のみに依存しています。したがって、助けを借りたチュートリアル/スレッドはごくわずかしかありません。ほとんどの場合、彼らはちょうどadd thi or add that to your xml
と言うが、私はそれらを持っていないので、それはお尻に少し痛みです。
また、私はaspectjでコンパイルするので、私はspringコンパイルの親を使用できません。メインクラスは私がプログラムしていない外側のjarファイルにあるので、メインクラス/メソッドを操作することもできません。
ので、コンクリート:
- それを包むウェブサーバなしのスタンドアロンのjar実行で春のブートアプリケーションできますか?
- 「はい」の場合、私は間違っていますか?依存関係、注釈、または設定が欠けていますか?
1.はい、あなたはウェブアプリケーションを実行しようとしていますが、Webサーバーは実行されません。 '@ SpringBootApplication'が何であるかについてのあなたの知識は間違っています。それは '@ EnableWebMvc'を含んでいません。 '@ EnableWebMvc'は、自動的に設定され、特定のWeb関連クラスが検出された場合にのみ追加されます。 @ SpringBootApplication'を追加して、適切なMavenプラグインと依存関係があることを確認してください。サーバーが必要なエンドポイントを公開する場合、Springブートには組み込みのものが付属しているため、展開する必要はありません。私はそれがここでの主な誤解だと思う。 –
申し訳ありませんが、私はあなたの答えを理解できないと思います。 @ SpringBootApplication'を追加するように教えてください。しかし、私が読んだことから、これをメインクラスに追加する必要があります。私がプログラムしていない別のjarファイルにあるので、そのメソッドを変更することはできません。あるいは、JpaConfigクラスに注釈を追加するだけでいいのですか?さらに、「エンドポイントを公開する」とはどういう意味ですか?春のブートは私が探しているかどうかのアーキテクチャですか?私の現在のjarプロジェクトからhttp GET/POST要求を送受信することは、私が達成しようとする唯一の目標です。 – christopher2007
コンテナがない場合、どのようにGET/POSTリクエストを受け取ると思いますか?私はいくつかのドキュメントを読んで、Spring Bootが何で、何ができるのかについて基本的な理解を得ることをお勧めします。注釈を追加するだけでいいですが、Springアプリケーションをブートストラップするもの、つまりSpringApplicationが何も必要なくなります。 –