問題タブ [component-scan]
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 - スプリング コンポーネントのスキャン プロセスにロジックを挿入する
そのため、Spring が特定のパッケージで Bean をスキャンすることを使用<context:component-scan ...>
または許可することができます。@ComponentScan("org.rythmengine.spring.web")
問題は、スキャン プロセス中にロジックを挿入するにはどうすればよいかということです。Spring のスキャンを利用して、特定のインターフェイスを実装した、または特定の注釈で注釈が付けられたすべてのクラスを見つけたいとします。
spring - @ComponentScan またはたった1つのクラスで
私は 2 セットのメイン パッケージでプロジェクトを維持しています。プロジェクトは Spring と Spring MVC を使用しています。これらのパッケージの 1 つには複数のコントローラーが含まれており、XML 構成を使用してスキャンされます ( <context:component-scan />
)。
問題は、他のパッケージに 1 つのクラス (スキャンされていない) があり、このクラスをスキャンする必要がありますが、パッケージにはこのクラスだけで他には何もないことです。今はリスクが高すぎるため、パッケージを変更することはできません。
注釈または XMLを使用してこれを行う方法はありますか?
java - Spring、コンポーネントスキャンが NamespaceHandler の周りで FatalBeanException を引き起こす
component-scan を使用すると、次の例外が発生します。
XML 構成は次のとおりです。
私が削除すると、component-scan
evertyingはうまく解析されますが、明らかにこれは解決策ではありません. 問題の原因は何ですか?
Spring の古いバージョンがクラスパスにあることについてよく読んだことがありますが、そうではないことを確認できます。
${spring.version} が 3.2.5-RELEASE である私の依存関係は次のとおりです。
java - Spring: 各テストクラスの最後に @PreDestroy が呼び出されないのはなぜですか?
次のように注釈が付けられた統合テストクラスがあります
これが私のAppConfigurationです
何らかの理由で、すべてのテストの最後に@Component
Beanが呼び出されません。ただし、テストが実行される前に、開始時に呼び出されます。@PreDestroy
CacheConsumerTest
@PostConstruct
誰が問題が何であるか知っていますか?私のいくつかは、@Component
(@Predestroy を呼び出すことによって) 遮断したいバックグラウンド スレッドです。そうしないと、バックグラウンドで行う作業によって、他のテスト クラスでの後続のテストが失敗します。
追加しようとしまし@DirtiesContext(classMode=ClassMode.AFTER_CLASS)
たが、役に立ちませんでした。
編集:問題を理解したので、DirtiesContext を機能させるために追加の手順を実行する必要がありました: Spring @DirtiesContext は Spring コンテキストをリロードしますか?
java - @ComponentScan が spring-boot-starter-test を使用したテストで機能しない
spring-boot-starter-test を使用してプロジェクト内のクラス@Service
とクラスをテストしようとしていますが、テストしているクラスでは機能しません。@Repository
@Autowired
単体テスト:
サービス:
単体テストのコメント付きのクラス注釈は、これを機能させるために私が試みたさまざまなことを表しています。テスト パッケージとプロジェクト パッケージは同じパッケージ パスにあり@ComponentScan
、エントリ ポイント (@RestController
メイン メソッドを持つクラス) から正常に動作します。私のクラスでは src/main/java 側の service@ComponentScan
とは問題ありませんが、テストでは問題ありません。を機能させるには、クラスにとして再度追加する必要があります。それ以外の場合、クラスは問題なくスコープ内にあり、テストから問題なく参照およびインスタンス化できます。問題は、テスト ランナーのクラスパス (この場合は /target/test-classes と /target/classes) の複数のエントリを正しくトラバースしていないように見えることです。@Autowire
@RestController
@Bean
@Configuration
@Autowired
@ComponentScan
私が使用している IDE は IntelliJ IDEA 13 です。
更新- ここに HelloWorldRs とその構成があります:
...
java - 実行可能なjarから外部Spring構成ファイルにアクセスする
以下は私のディレクトリ構造です
以下は、外部スプリング構成ファイルを読み取るための私のコードです
私のMANIFESTファイルには次のエントリがあります。
また、/app/infra/myjar/config フォルダーを指すように .bashrc の CLASSPATH 変数を設定しました
を使用してjarを実行しようとしているとき
次の例外が発生しています
ここで何がうまくいかないのか、どうすれば理解できますか?
spring - component-scan (Spring) の使用に関する問題 - 依存関係を注入しない
私は新しいアプリの開発を開始しており、いくつかのコード (プロトタイプ) を受け取りました。spring-servlet.xml がタグを使用していることに気付きました:
<context:component-scan...
以前にそのタグを使用したことがなく、非常に混乱しています。マッピングが機能していないため、一部の構成が欠落していると思います。
のように使えば
<context:component-scan base-package="my.app.mainpackage">
、アプリはデプロイに失敗します
私がそれを次のように使用する場合:
<context:component-scan base-package="my.app.mainpackage.controller" />
コントローラーで @Autowired を使用しない限り、アプリはデプロイされますが (それ以外の場合はデプロイされません)、コントローラー パッケージの他のすべてのパッケージには依存関係が注入されません。
結局、私は依存関係を注入することができません!
サーバーログには、起動時のエラーが次のように表示されます。
web.xml
どんな助けでも大歓迎です。
前もって感謝します!
spring - component-scan は親プロジェクトでコンポーネントを見つけることができません
春の JPA ユーティリティ プロジェクトに依存する春の mvc プロジェクトがあります。
mvc プロジェクトは、Spring JPA プロジェクトでリポジトリ コンポーネントを見つけることができません。JPA プロジェクトを Java ビルド パスとデプロイメント アセンブリに含めました。JPA プロジェクトのアプリケーション コンテキストは MVC のクラスパスにあります。
MVC で使用できるようにするために、springJPA プロジェクトの Java ビルド パスで order and export を使用しています。JPA プロジェクト内のテスト ケースは正常に動作しますが、MVC 内のリポジトリにアクセスしようとすると、自動配線エラーが発生します。
ここに詳細があります。
MVC プロジェクトの web.xml
サーブレット コンテキスト
展開アセンブリ
フォルダ構造
コンソールエラー