問題タブ [spring-annotations]

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.

0 投票する
2 に答える
2485 参照

spring - spring @RequestMapping URI テンプレート エラー

@RequestMapping URI テンプレートについて質問があります。ユーザーの詳細の更新を処理するコントローラーを作成しました。そして、以下に2つの方法を書きます。

リクエスト URI は /project_name/updateUser/app/au/132 のようなものです

このアプリを tomcat で実行すると、最初のメソッドは呼び出されません。コントローラは常に 2 番目のものを使用します。しかし、Spring フレームワークのドキュメントでは、「メソッドは任意の数の @PathVariable アノテーションを持つことができます」と述べています。

したがって、メソッドに 3 つの @PathVariable アノテーションを付けられない理由がわかりません。

もう1つは、最初のメソッド @RequestMapping アノテーションを次のように変更すると、呼び出すことができます。

Spring は 1 つのメソッドで 3 つの @PathVariable アノテーションを処理できないようです。

なぜ、どこで間違ったのか教えてくれる人はいますか?

前もって感謝します!

0 投票する
0 に答える
2716 参照

spring-annotations - Spring DefaultMessageListenerContainer/SimpleMessageListenerContainer (JMS/AMQP) アノテーション構成

そのため、多くのチームが共通のサービスを使用し、共通のアーキテクチャに従っているプロジェクトに取り組んでいます。使用されているサービスの 1 つはメッセージングであり、現在は ActiveMQ を使用した JMS です。ほとんどすべてのチームは、メッセージの作成と送信に関する厳密な一連のルールに従う必要があります。つまり、すべてが pub-subscribe であり、送信されるメッセージは次のようなものです。

「jsonPayload」は、すべてのチームが拡張する基本クラスから取得されるため、共通の属性があります。

したがって、基本的に JMS では、全員が常に同じ種類のメッセージを送信しますが、異なる ActiveMQ トピックに送信します。メッセージ (WorkDTO) が JMS 経由で送信される場合、最初に JSON オブジェクトに変換され、次に TextMessage で送信されます。

チームがトピックのサブスクライバーを作成する場合は常に、DefaultMessageListenerContainer を作成し、メッセージを受信するように適切に構成します (Java ベースの Spring 構成を使用しています)。基本的に、チームが定義するすべての DefaultMessageListenerContainer は、メッセージを受信する宛先とメッセージ ハンドラーを除いてほとんど同じです。

そのような場合、アノテーションを介してメッセージング構成をさらに抽象化する方法に誰もがどのようにアプローチするのだろうと思っていましたか? つまり、誰もがほぼ同じ要件に従う必要があるため、次のようなものが役立つ可能性があります。

もちろん、 @Listener アノテーションを使用して DefaultMessageListenerContainer を構成する方法の部分は省略しました。BeanFactoryPostProcessor を調べて、必要なクラスを作成し、それらをアプリケーション コンテキストに追加しましたが、そのすべてを行う方法がわかりません。

私が質問する理由は、JMS/ActiveMQ から AMQP/RabbitMQ に切り替えており、アノテーションを使用してメッセージング構成をさらに抽象化したいからです。AMQP は JMS とは違うので、設定の詳細は少し異なります。AMQP から別のものに切り替えるとは思えません。

ここで、チームは宛先の名前と、サブスクリプションを永続化するかどうかを知るだけで済みます。

これはつい最近ふと頭に浮かんだことです。これについて何か考えはありますか?

ただし、過度に複雑なことはしたくないので、別の方法として、宛先とメッセージ ハンドラーを指定して事前構成済みの DefaultMessageListenerContainer を返す便利なメソッドを作成することもできます。

0 投票する
1 に答える
4821 参照

spring - Struts2 Spring プラグイン: 注釈付きアクションによる依存性注入が機能しない

次の問題があります。struts2、spring、および struts2-spring-plugin が稼働しているアプリケーションがあります。Spring を介した依存性注入は一般的に機能します。(たとえば、Bean をアクションに注入します) しかし、私のアクション クラスは、定義されているように、セッションごとにスプリングを介して注入されません。Actions コンストラクターは、要求ごとに呼び出されます。Spring は Spring のオブジェクト ファクトリを使用していないようです。@Action アノテーションを使用する代わりに struts.xml で Action を定義すると、依存性注入が機能します。

ここにいくつかのスニペットがあります: ここでは、Bean とアクションを定義しています。Bean のインジェクションは機能しますが、@Action アノテーションを使用すると、ここでアクションが作成されることはありません。

アクションの実装は次のとおりです。

public PatientAction PatientAction()URL「http://localhost/myApp/patient」を呼び出すと、メソッドを入力せずに、リクエストごとに Action-Class のインスタンスが作成されます。

これを struts,xml で使用すると、次のようになります。

そして、「http://localhost/myApp/foo」を呼び出し、アクションがSpring経由で注入されます。

これは私の struts.properties ファイルです:

私が使用するバージョン (Maven 経由:)

注釈で何が間違っているのか誰か教えてもらえますか?

0 投票する
1 に答える
1136 参照

spring - Springのアスペクト指向プログラミング

2012年2月28日12:46:54PMorg.springframework.context.support.AbstractApplicationContext prepareRefresh INFO:更新org.springframework.context.support.ClassPathXmlApplicationContext@780024:開始日[火2月28日12:46:54 GMT + 05: 2012年30月]; コンテキスト階層のルート2012年2月28日12:46:54PMorg.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions情報:クラスパスリソースからのXMLBean定義のロード[newSpringXMLConfig.xml]2012年2月28日12:46:55 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons情報:org.springframework.beans.factory.support.DefaultListableBeanFactory@ef98acのシングルトンの事前インスタンス化:Beanの定義[org.springframework.aop.config.internalAutoProxyCreator、tri、cir 、shape、LAspect]; 工場階層のルート2012年2月28日12:46:55PMorg。springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons情報:org.springframework.beans.factory.support.DefaultListableBeanFactory@ef98acのシングルトンを破棄しています:Beanを定義しています[org.springframework.aop.config.internalAutoProxyCreator、tri、cir、shape、LAspect] ; ファクトリ階層のルートスレッド"main"の例外org.springframework.beans.factory.BeanCreationException:クラスパスリソース[newSpringXMLConfig.xml]で定義された「tri」という名前のBeanの作成中にエラーが発生しました:Beanの初期化に失敗しました。ネストされた例外はjava.lang.IllegalArgumentExceptionです:ポイントカットが整形式ではありません:文字位置4に「名前パターン」が必要ですget()^ DefaultListableBeanFactory @ ef98ac:Beanの定義[org.springframework.aop.config.internalAutoProxyCreator、tri、cir、shape、LAspect]; ファクトリ階層のルートスレッド"main"の例外org.springframework.beans.factory.BeanCreationException:クラスパスリソース[newSpringXMLConfig.xml]で定義された「tri」という名前のBeanの作成中にエラーが発生しました:Beanの初期化に失敗しました。ネストされた例外はjava.lang.IllegalArgumentExceptionです:ポイントカットが整形式ではありません:文字位置4に「名前パターン」が必要ですget()^ DefaultListableBeanFactory @ ef98ac:Beanの定義[org.springframework.aop.config.internalAutoProxyCreator、tri、cir、shape、LAspect]; ファクトリ階層のルートスレッド"main"の例外org.springframework.beans.factory.BeanCreationException:クラスパスリソース[newSpringXMLConfig.xml]で定義された「tri」という名前のBeanの作成中にエラーが発生しました:Beanの初期化に失敗しました。ネストされた例外はjava.lang.IllegalArgumentExceptionです:ポイントカットが整形式ではありません:文字位置4に「名前パターン」が必要ですget()^ クラスパスリソース[newSpringXMLConfig.xml]で定義:Beanの初期化に失敗しました。ネストされた例外はjava.lang.IllegalArgumentExceptionです:ポイントカットが整形式ではありません:文字位置4に「名前パターン」が必要ですget()^ クラスパスリソース[newSpringXMLConfig.xml]で定義:Beanの初期化に失敗しました。ネストされた例外はjava.lang.IllegalArgumentExceptionです:ポイントカットが整形式ではありません:文字位置4に「名前パターン」が必要ですget()^

原因:java.lang.IllegalArgumentException:ポイントカットが整形式ではありません:文字位置4に「名前パターン」が必要ですget()^

Javaの結果:1 BUILD SUCCESSFUL(合計時間:1秒)

とコード:

0 投票する
1 に答える
1780 参照

xml - Spring MVC アノテーションと xml 構成

フレームワーク 2.5.6、セキュリティ 2.0.4、および Web サービス 1.5 を使用していた Spring MVC アプリをアップグレード中です。新しいバージョンを調査したところ、Spring 3.1.0 および 3.0.7 ではコントローラーの継承が廃止され、アノテーション駆動型の構成が優先されていることがわかりました。アノテーションがSpring構成の前進であることは理解していますが、私の状況では、依存性注入のデフォルト値を構成する人はsrcファイルを編集できません。

私の会社でのプロセスは次のようなものです。

  • 私は Java EE アプリの主な開発者です。
  • jsp、css、(一部の) javascript、xsl、XML Spring 構成、および Spring プロパティ ファイルをカスタマイズするデザイナーとスキルの低い開発者の別のチームがあります。
  • 100 を超えるアクティブなカスタム実装があり、それぞれ異なるデフォルト値を Bean に注入し、一部は i18n メッセージングを使用しています。
  • コア製品に何百もの異なるテーマを用意する代わりに、「カスタマイズ チーム」が独自のソース管理システム内でカスタム アプリケーションを維持できるようにする非常にスマートなビルド プロセスがあります。ビルド スクリプトは、コンパイルして Tomcat にデプロイする前に、カスタム アプリケーションのファイルをコア アプリケーションに上書きします。そのため、src ファイルには一切触れず、エンジニアリングと社内の美学を切り離しています。

(構成モジュールをアプリに組み込む機会があれば、それは既に行われているはずです。そのため、今のところ、XML 構成の管理にとどまっています。)

では、私の場合、注釈構成はどのように機能しますか? 私たちの製品のアーキテクチャを考えると、それは実行可能なソリューションではないように思えます。注釈駆動型構成の主な目標は、開発者が XML ファイルではなく src ファイル内で依存関係の挿入を管理できるようにすることではないでしょうか?

Spring 3 で XML 構成のみを使用する方法を知っている人はいますか?

編集:私はこれを見つけました: http ://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-java-combiningなので、すべてのコントローラーを移行できると思いますアノテーションを使用するが、他の Bean はそのままにしておくことができます。これは、カスタマイズ チームがコントローラーの構成にあまり触れないためです。

0 投票する
1 に答える
1067 参照

spring - Springでユーザーの存在チェックに注釈を付ける方法は?

JSON APIを介してユーザープロジェクトを管理したいのですが、相対パスコントローラーを使用したいと思います。このような:

多数のメソッドを追加し、ユーザーが存在するかどうかを確認する必要があるたびに。そのコードを追加する代わりに:

...すべてのメソッドの開始時に、ユーザーが存在しない場合に404​​を返すカスタムアノテーションを作成したいと思います。

私はそれを行うためにこのチュートリアルを見つけました。これは本当に説明されているほど複雑ですか?他の解決策を知っていますか?(2つのクラスと50行を超えるコードを記述して、4行に注釈を付けることは避けたいと思います。)

ありがとうございました。

0 投票する
3 に答える
5485 参照

java - SpringMVC@AutoWired応答が機能しない

私は持っています :

とタグ:

私のconfig.xmlで

私が感じるのは十分なはずですが、@Autowiredに問題があります。

タイプ[javax.servlet.http.HttpServletResponse]の一致するBeanが依存関係に見つかりません:修飾する少なくとも1つのBeanが必要です...

Beanのセットアップなどについて言及しているソリューションをいくつか見てきましたが、もっと良い方法が必要だと確信しています。注釈スキャンがこれを処理する必要があります。異なる時間にいくつかの異なるアノテーションのためにxmlでBeanを設定しなければならない場合、それはひどいことです。注釈を使用するときに機能させたいだけです。

私が見たもの: SpringMVC-応答

ありがとう!

0 投票する
1 に答える
512 参照

spring - Springの注釈値へのプロパティ値の割り当て

ehcache-spring-annotationsと@Cacheableアノテーションを使用しています(Spring 3.1では新しい@Cacheableを使用しますが、必要なものがすべて提供されているわけではありません)。

cacheName変数をプロパティファイルのエントリの値に設定したいのですが、EL表記を使用しようとすると、リテラル文字列として読み取られます。これを回避する方法はありますか?

.propertiesファイルで...

例外:

0 投票する
2 に答える
2352 参照

spring - 注釈付きのクラスがSpringで見つかりません

pom.xml

spring.xml

クラスイベント:

例外:

0 投票する
2 に答える
3924 参照

spring - Spring 3 MVC Web アプリケーションで承認/アクセス制御を実装する最良の方法は何ですか?

仲間、

Spring 3 MVC を Web フレームワークとして使用し、Hibernate Annotations を ORM フレームワークとして使用して Web アプリケーションを開発しようとしています。私の仕事では、次のように設計することに慣れています。

  • (CompanyName)User.java -システム内のユーザーを意味するクラス

  • Profile.java - (CompanyName)UserとのNN関係 にあるシステム内のROLEを意味するクラス。ROLEとは、 (ADMIN、ANONYMOUS、CUSTOMER SERVICE USER など)などのユーザー グループを意味します。

  • UserProfile.java - UserProfileの間の関係を意味するクラス。これは、データベース内のNN関係のJOIN TABLEを表します。

  • Module.java - Web アプリケーションのMODULEを意味するクラス。各モジュールは無制限の機能で構成されていますが、各機能は 1 つのMODULEにのみ関連付けることができます。たとえば、USER AUTHENTICATION機能は、SECURITYまたはAUTHENTICATIONモジュールに関連しています。モジュールは、@Controller でタグ付けされたアプリケーション内のコントローラーです。

  • Feature.java -アプリケーションのFEATUREを表すクラス。各機能は、1 つまたは複数の操作で構成されています。たとえば、USER MANAGEMENT は FEATURE です。そのため、多くの操作 (CREATE、READ、UPDATE、DELETE USER など) で構成されています。また、FEATURE には、その機能への URL を表す ENTRY URL があります (ボタン/リンクをクリックしたときにユーザーをその機能にリダイレクトするため)。各 URL は Module(Controller) 内のメソッドにマップされます。

  • Operation.java - Web アプリケーションのOPERATIONを表すクラス。操作は、基本的にREGISTER USERREMOVE USERなどの単一/基本操作ですが、必ずしも CRUD 操作ではありません。各操作にはENTRY URL (操作を開始するページを示す URL) があります。たとえば、USER REGISTRATION操作の場合、エントリURL/webapplicationName/moduleName(USER)/featureName(USER MANAGEMENT)/operationName(REGISTER USER)になります。ただし、操作を行うにはページ フローが必要になる場合があります。たとえば、ユーザー登録操作には、登録フォームを含むページ、フォームを送信するためのアクションとしての URL (通常はメソッドにマップされる)、および成功/エラーメッセージを表示するための成功/エラーページが必要になるでしょう。

  • Permission.java - システム内のURLを表すクラス。各 Permission は、ページ フローを構成する 1 つまたは複数のOPERATIONS (Operation.java) に関連付けられています。例: USER REGISTRATION操作には、おそらく次のURL/PERMISSIONSがあります。

    • /webapplicationName/moduleName(USER)/featureName(USER MANAGEMENT)/operationName(USER REGISTRATION)/register - (CompanyNameUser)Controller 内のメソッドにマップされた URL で、フォームを送信し (フォーム アクション)、通常は呼び出しをデータベースに保持します。 a (CompanyNameUser)DAO

    • /webapplicationName/moduleName(USER)/featureName(USER MANAGEMENT)/operationName(REGISTER USER)/success/ - 成功メッセージを表示するためにコントローラーのメソッドにマップされた URL

    • /webapplicationName/moduleName(USER)/featureName(USER MANAGEMENT)/operationName(REGISTER USER)/error/ - エラーメッセージを表示するためにコントローラーのメソッドにマップされた URL

  • ProfilePermission.java - プロファイルと権限の間の NN 関係の JOIN TABLE を表すクラス。

ここでの問題は、Spring Security を使用してアクセス制御を実装する場合、User.java クラスを実装する運命にあり (名前をカスタマイズできません)、ROLES 用のクラスや AUTHORITIES 用のその他のクラスも必要になることです。そのため、独自のアクセス制御フローを構築できません。SERVLET FILTER を使用してアクセス許可の許可/拒否を確認することを考えました。ただし、URL にリダイレクトしようとしたり、フィルター内で chain.doFilter() を実行したりすると、エラー 404 が表示されます。これは、 DefaultAnnotationHandlerMappingを使用してリクエストを処理しているためだと思います。つまり、私の構成は次のとおりです。

web.xml:

root-context.xml:

サーブレット コンテキスト:

SecurityFilter.java:

それで、私は何をすべきですか?Spring Security を使用する必要がありますか? Spring Security で独自のカスタム プロセスを実装する方法はありますか? フィルターを使用する代わりに、ハンドラー マッピングでインターセプターを使用する必要がありますか? ヘルプ/提案をいただければ幸いです。

前もって感謝します!