問題タブ [spring-4]
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 - spring4 を spring security3.2.3 と統合する方法
Spring4 アプリケーションと統合された Struts2 を使用しています。私は spring4 と struts2 を正常に統合しましたが、Spring セキュリティも統合する必要があります。そのため、Spring-security-config/core および web 3.2.3 jar を使用しました。しかし、私は唯一の例外に直面しています
私のweb.xmlは
そして、applicationcontext-security は
spring4 を spring security 3.2.3 と統合するのを手伝ってください。 使用される他のjarファイル
前もって感謝します...
java - Spring オートワイヤリングのパラメーター化されたジェネリック型
Spring 4 には、ジェネリック型解決の主要な拡張機能が含まれていましたが、型引数が含まれている Bean クラスでパラメーター化されている場合、ジェネリック型の自動配線に問題があります。
外部サービスに送信されたジョブのステータスを追跡する必要があり、開始時に各ジョブのエントリを作成し、ポストバックを受信したときにそれをクリアまたは更新したいと考えています。私は通常、永続化戦略をサービス インターフェイスから分離するように努めているため、インターフェイスJobStatus
と Spring Data Mongo クラスを用意していますMongoJobStatus implements JobStatus
。外部サービスが ID (HTTP 502 など) を割り当てる機会を得る前にジョブが失敗する可能性があるJobStatus
ため、更新を識別するためにサービスに戻す必要があります。
したがって、ジョブの起動とポストバックの記録を処理する Spring コントローラーは次のようになります。コントローラー クラスは型パラメーターを持っているため、新しいステータス オブジェクトを格納してサービスに戻すことができます。
私の MongoDB を利用した実装は次のようになります。
起動しようとすると、Spring コンテキストがNoSuchBeanDefinitionException
forで失敗しJobStatusService
ます。を設定required=false
すると、MongoJobStatusService
Bean が適切にコンポーネント スキャンされ、コンテキストにインストールされることを確認しましたが、Spring は、そのクラスがそのパラメータ化されたジェネリック インターフェイスを実装していることを理解できないようです。
フィールドレベルでリテラル型引数として埋め込まれているのではなく、含まれている Bean レベルでパラメーター化された型引数を持つジェネリックインターフェイスを実装する Bean が必要であることを Spring に指定する方法はありますか?
java - Servlet 3 APIをオーバーライドするSpring 4 Jar
xml ファイルではなく、プログラムで最新の Spring アプリケーションを構成しようとしています。ただし、spring-webmvc-4.0.3.RELEASE jar をインポートすると、コンパイラが Servlet 3 API を使用しなくなるという問題が発生しています。
次のようなメソッドにアクセスする必要があります: ServletContext.addListener(java.lang.Class listenerClass)
と
ServletContext.addServlet(java.lang.String servletName, java.lang.Class servletClass)
しかし、 DispatcherServlet のような spring mvc クラスも使用できる必要があります。
これは Spring 4 の既知のバグですか? 解決策を知っている人はいますか?
java - Spring Boot を使用して、Postgresql を使用して Spring アプリを Heroku にデプロイするにはどうすればよいですか?
私は Heroku で Spring 4 を評価していますが、これまでのところ両方に非常に感銘を受けています。
ただし、Spring Boot アプリを Heroku で実行するのに問題があります。Postgresql を除いて、すべて正常に動作しています (Connection Refused
エラーが発生するだけです)。
問題は確かに私がどのように設定しているかに関係していますDataSource
が、これまでのところ私は試行錯誤のアプローチに従っています! Heroku からデータ ソースをセットアップする方法がよくわからDATABASE_URL
ず、例も見つかりません。
Google で検索して偶然spring-cloudを見つけましたが、これは有望に見えますが、DATABASE_URL
. また、Spring.IO でも言及されていないので、本番環境で使用するためのオプションでさえあるのだろうか?
java - 非フォームプロパティが失われないように、バインディングのために永続化された Hibernate エンティティをロードする方法は?
私はSpring 4とHibernate 4を使用しています。他の多くの人が抱えているように見える問題があります。Spring フォームでエンティティ全体ではなく、特定のプロパティのみを編集したい。
デフォルトでは、永続化されたエンティティをロードすると、そのプロパティのいくつかを編集用のフォームに表示し、コントローラーに投稿して保存します...フォームに含まれていないプロパティ値はすべて失われます。なぜこれが起こるのかは理解していますし、いくつかの解決策が浮かんでいることも知っています。
1)保存時に、データベースからエンティティをロードし、モデルから必要なプロパティのみをコピーして保存します。
2) フォームが開始したら、エンティティをロードし、 @SessionAttributes 機能を使用してリクエスト間のセッションに格納します。
しかし、私はこれらのどれも好きではありません。多分私は何かが欠けているかもしれませんが、解決策はかなり単純に思えます。どこかで、デフォルトの Spring Web バインダーが、フォーム プロパティをコピーするエンティティのインスタンスを作成しています。それをオーバーライドし、ID を使用して永続化されたエンティティを DB からロードすることができれば、Spring のバインディングでそれをターゲット エンティティとして使用できます (フォームで送信されたプロパティのみをコピーし、他のプロパティはそのままにしておきます)。私の問題を解決します。
カスタム WebDataBinder クラスをどこでどのように使用できるかを探していました。方法がわかりません....そして、それが私が見るべき場所であるかどうかさえわかりません。
助言がありますか?
ありがとう!!
編集:
私の問題をよりよく説明するために、架空の例を挙げます。50 個のプロパティを持つエンティティ クラス Customer があるとします。連絡先情報のみを更新するためのフォームがあります。50物件中、たったの5物件です。
通り
市
州
郵便
番号
これをSpringフォームで行う場合、フォームが送信されて保存されると、Springは新しい「空白」エンティティを作成し、フォームからの値を入力してコントローラーに渡します...これが保存されます。問題は、firstName、lastName、customerType などの他のプロパティがフォームに含まれていなかったため、Spring がそれらをそのままにして null のままにすることです。Spring が提供するエンティティを使用してエンティティを更新するように Hibernate に指示すると、Hibernate は、firstName、lastName などを Bean で提供する値であるため、null にする必要があると考えます。私がそれらのいくつかを変更しただけだとは知りません。
それでどうなるの?50 のプロパティ値のうち 45 が吹き飛ばされます。
以下のコメントで、Sp00m は機能する解決策を提案しました... 非表示フィールドに他のすべてのプロパティを含めます。しかし、さまざまな理由から、その解決策は私にとって大きな頭痛の種です。
(新しい/空白のエンティティを作成する代わりに) Spring にデータベースからエンティティをロードさせ、フォームで送信されたフィールドのみを入力することができた場合。それが私の問題を解決すると信じています。
同様の議論 (ただし、隠しフィールド ソリューションを使用) は、ここで見つけることができます。
java - Spring(4) mvc:default-servlet-handler がコントローラーマッピングをオーバーライドするのはなぜですか?
組み込みの Tomcat 8 を開始し、WebApplicationInitializerインターフェイスの実装を使用して Spring アプリケーション コンテキストをブートストラップします。この実装では、 DispatcherServletを Tomcat サーブレット コンテキスト、私のコードにも追加します。
どこかで私は:
上記のメソッドをトリガーします。正常に動作します。
コンテキスト定義は次のようになります。
私のコントローラー:
ブラウザで Ready メソッドを開こうとすると、404 Not Found と表示されます。mvc :resourcesマッピングを削除すると、突然機能します。Order アノテーションをコントローラーに追加し、order 属性を mvc:resources マッピングに追加しようとしましたが、うまくいきませんでした。
誰でもこれに対する解決策を見たことがありますか?
私が使用した:Java8、埋め込みTomcat8、Spring4
EDIT : ログファイル出力を追加
コンテキストに mvc:resources タグが追加されたログ出力は次のとおりです。
mvc:resources タグをコンテキスト ファイルから削除すると、reuqest が機能し、ログ出力は次のようになります。
編集: mvc:resourcesタグを削除し、代わりにmvc:default-servlet-handlerタグを使用すると、同じ結果が得られ、リクエストが機能しません。
jsf-2.2 - Spring 4.1 は JSF 2.2 をサポートしますか?
少し前に、Spring 4.1 が JSF 2.2 をサポートするという噂を耳にしました。特に、SpringBeanFacesELResolver は、ビュー スコープのコントローラー Bean を作成できます。Spring 3 は、アプリケーション スコープ、リクエスト スコープ、およびセッション スコープのみをサポートします。私の知る限り、Spring 4.0 は同じスコープをサポートしています。
残念ながら、Spring 4.1 と JSF 2.2 に関するリファレンスは見つかりませんでした (私自身の Web サイトを除いて、噂を聞いたことがあると述べています)。Spring 4.1 と JSF 2.2 に関する計画はありますか?
ところで: Spring と JSF を扱う StackOverflow についていくつか質問があることは知っています。私の質問は、Spring 4.1 に関するものであり、Spring のネイティブ サポートに関するものであるという点で異なります。特に、ViewScope を自分で実装する方法についてではありません。