問題タブ [spring-boot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JUnit の (out) リポジトリを使用した Spring Boot サービス クラスの単体テスト
私は、次の構造を持つスプリング ブート ベースの Web サービスに取り組んでいます。
コントローラ (REST) --> サービス --> リポジトリ (いくつかのチュートリアルで提案されているように)。
私のデータベース接続 (JPA/Hibernate/MySQL) は @Configuration クラスで定義されています。(下記参照)
Service クラスのメソッドの簡単なテストを書きたいのですが、ApplicationContext をテスト クラスにロードする方法と、JPA / リポジトリをモックする方法がよくわかりません。
これは私がどこまで来たかです:
私のサービスクラス
私のテストクラス:
しかし、次の例外が発生します。
原因: org.springframework.beans.factory.BeanCreationException: 'sessionService' という名前の Bean の作成中にエラーが発生しました: 自動配線された依存関係の注入に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.myApp.SessionRepository com.myApp.SessionService.sessionRepository; です。ネストされた例外は org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualing bean of type [com.myApp.SessionRepository] が依存関係に見つかりません: この依存関係のオートワイヤー候補として適格な少なくとも 1 つの Bean が必要です。依存関係アノテーション: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
完全を期すために:ここにjpaの@Configurationがあります:
java - Spring Boot にフィルタークラスを追加するにはどうすればよいですか?
Filter
Spring Boot にクラス (Web アプリケーション用)の注釈はありますか? おそらく@Filter
?
プロジェクトにカスタム フィルターを追加したいと考えています。
Spring Boot リファレンス ガイドでは について言及されて
FilterRegistrationBean
いますが、その使用方法がわかりません。
spring - Spring Boot Secure サンプルスタックトレース
Spring Boot GIT プロジェクトをプルダウンしmvn eclipse:eclipse
、spring-boot-sample-secure フォルダーで実行し、そのプロジェクトだけを STS にインポートしました。ただし、実行すると、次のようになります。
maven を実行して Eclipse プロジェクトをビルドする以外 (およびインポート時に STS が行った可能性があるもの) 以外は、ファイルにまったく変更を加えていません。サイトは正常に動作しているようです。ユーザー/パスワードを使用してログインできます。ログアウトできます。エラーなし。しかし、そのスタック トレースは見栄えが悪いです。これは、大量消費の準備が 100% できていない可能性があるあまり生産的ではないコードによって引き起こされた、ただのレッド ヘリング メッセージですか、それとも追跡すべき問題を示しているのでしょうか?
templates - thymeleaf を使用して親レイアウトでテンプレートをラップする
spring-boot と thymeleaf を使って小さなプロジェクトを始めることにしました。
thymeleaf 自体は今のところ素晴らしいように見えますが、私の質問は、ページの基本的なレイアウトをもたらす、layout.html などを作成するための最良の方法は何かということです。
like
- 一般的な css インクルージョン
- 一般的な js インクルージョン
- 基本構造 (例: 2/3 列のレイアウト)
これは、単一のページのコンテンツ (ブログ投稿の表示、コメントの表示、ギャラリーの画像の表示など) にラップされているため、すべてのテンプレートに共通のものを持ち込む必要はありません。
今まで私が見つけた唯一の方法はフラグメントインクルージョンを使用することですが、これが現在のリクエストに対してレンダリングしたいテンプレートの周りの完全な構造を取得するための正しいアプローチであるかどうかはわかりません
<div class="content"></div>
私のテンプレートをどのように取得しますか?
誰かが助けてくれることを願っています。
前もって感謝します
spring-boot - スプリングブート組み込み戦争
Spring-Boot アプリにサードパーティの戦争を含めるにはどうすればよいですか? 従来の tomcat デプロイ ルートではなく、単一の実行可能なアーティファクトに固執したいのですが、hawtio ( http://hawt.io/getstarted/index.html ) のようなものも含めたいと思います。
どんな提案でも大歓迎です。
java - Spring アプリを本番サーバーにデプロイするにはどうすればよいですか?
私は戦争として(グラスフィッシュに)展開しようとしているEclipseで構築されたSpring MVCアプリを持っています。次のような Application クラスがあります。
編集: 私は近づいています。war ファイルがデプロイされます。しかし、どの Web サービス エンド ポイントにも到達できません (それらはすべて 404 を返します)。
そして、次のような application-context.xml :
コントローラーは次のようになります。
編集2 ポインタをありがとう。ここからの解決策: http://spring.io/guides/gs/convert-jar-to-war/は、このようなクラスを追加することでした。まだテストしていませんが、これは web.xml の代わりになると思います:
ありがとう
java - カスタム @Configuration クラスで spring-boot プロパティの注入が機能しない
データベース関連のもの (EntityManager、DataSource、TransactionManager) をセットアップし、フィールドで使用@Value("${property.name}")
するプロパティを取得する DatabaseConfig クラスを作成したかったString
お気に入り
問題は、プロパティ ファイルの値ではなく、これらすべての文字列が NULL であることです。
コードを自分のApplication
クラス (main
と で参照されているクラス) に入れるとSpringApplication.run(Application.class, args);
、値の注入が機能します。
つまり、 @Value は Application クラスでは機能しますが、カスタム @Configuration クラスでは機能しません:(
何が間違っている可能性がありますか?それとももっと情報が必要ですか?
更新: より多くのコード
方法 1、Application.java の DB Config と @Value は、PropertySourcesPlaceholderConfigurer の有無にかかわらず動作します
方法 2 (私がしたいこと)、独自のファイル (DatabaseConfing.java) 内の DB スタッフはPropertySourcesPlaceholderConfigurer
、DatabaseConfig 内の @Beans の後に常に呼び出されるため、(Application または DatabaseConfig) がある場所に関係なく機能しません:(
init.d - デーモンとしての Spring Boot (Tomcat) ベースのアプリケーション - 停止方法は?
組み込みの tomcatをコンテナーとして使用するSpring Boot Web サービスを作成しました。
システムが再起動した場合に備えて、いくつかの情報を mysql データベースにバックアップしたいと考えています。
私のWebサービスでは、バックアップを実行するために@Scheduled()
とを使用しています。@PreDestroy
^C でサーバーを停止するとうまくいきます。
しかし、sysV スクリプト( /etc/init.d
) と kill コマンドを使用してプロセスを強制終了すると、デーモンが mysql に依存していても、バックアップが完了する前に mysql サーバーがシャットダウンされます (ログに SQL 例外が発生します)。
もちろん、その理由は、 kill はプロセスを停止するためのシグナルのみを送信するためです。
(sysv スクリプトから) 実行中の Spring Boot Tomcat サーバーを同期的に停止するにはどうすればよいですか?
spring - Spring Boot の application.properties で使用できるプロパティのリストは?
Spring Boot ドキュメントには、application.properties ファイルでプロパティを設定できると書かれています。
しかし、設定できる利用可能なプロパティをリストしたドキュメントが見つかりません。
そのようなドキュメントはどこにありますか?
たとえば、埋め込みサーブレットの documentRoot を設定したいとします。
setDocumentRoot() メソッドが AbstractEmbeddedServletContainerFactory.java に実装されていることがわかりました。
しかし、メソッドをいつどこで呼び出すか、または application.properties で設定できるプロパティの名前がわかりません。
Spring Boot の目的は構成を容易にすることなので、簡単なはずだと思います。
前もって感謝します。
アップデート:
M. Deinum さんの提案で、application.properties に「server.document-root: someDirectoryName」を追加したところ、以下のエラーが発生しました。
org.springframework.boot.context.embedded.properties.ServerProperties の実装方法が原因だと思います。( https://github.com/spring-projects/spring-boot/blob/97cb7f096798ecd016de71f892fa55585d45f5eb/spring-boot/src/main/java/org/springframework/boot/context/embedded/properties/ServerProperties.javaを参照)
「@ConfigurationProperties(name = "server", ignoreUnknownFields = false)」を宣言します。そのため、「server」で始まるアプリケーション プロパティを管理し、不明なプロパティ名を許可しません。
また、documentRoot の getter/setter はサポートしていません。
ところで、ServerProperties クラスは org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration によって Bean に作成されます ( https://github.com/spring-projects/spring-boot/blob/97cb7f096798ecd016de71f892fa55585d45f5eb/spring-boot-autoconfigure/srcを参照)。 /main/java/org/springframework/boot/autoconfigure/web/ServerPropertiesAutoConfiguration.java ) を設定して、構成プロセスに参加できるようにします。
そこで、ServerProperties 風のものと ServerPropertiesAutoConfiguration 風のものを自分で実装してみました。
コードは次のとおりです。
そして、application.properties に次の行を追加しました。
sample.server.documentRoot: someDirectoryName
...そしてそれはうまくいきます!
「############## setDocumentRoot」がコンソールに出力され、ドキュメント ルートが実際に設定されます。
それで、今は幸せですが、これは正しい方法ですか?
spring - spring boot の実行に失敗する - 起動時の IllegalAccessError
奇妙な問題があり、解決できませんでした。サンプル JPA スプリント ブート (v0.5.0-M6) プロジェクトを、作成中のアプリケーションの出発点として使用しようとしています。JPA サンプルを取得し、ローカルで実行しました。次に、コードをそのプロジェクトに追加しました。私はEclipseにインポートし、スプリングブートとして実行しました。次に、次のエラーが表示されます。
私が知る限り、これは間違ったアプリケーション コンテキストです。なぜなら、XML 構成ではなく注釈を使用して構成を駆動しているためです。Spring Boot はこれを自動的に選択するので、上記を使用しないように指示する必要があります。少なくともそれは私がする必要があると思うことです。
ここと spring.io フォーラムで検索しましたが、誰も同じ問題を抱えているようには見えません。
質問: 自動構成でアプリケーション コンテキストを選択する理由は何ですか?
上記の問題を解決するには、何を確認する必要がありますか? ここで自動構成の問題をデバッグするために他に何を提供する必要がありますか?
ティア、
スコット