0

プロファイルを初めて使用し、ヘルプが必要です。注釈を介して配線された依存関係 (RuleHandler) を取得する抽象基本クラス (DecisionManagementRuleExecutor) があります。

    @Component
    public class RuleHandler {......

   public abstract class DecisionManagementRuleExecutor<M extends PersistentEntity,T extends Response> implements RuleExecutor<M,T>{

   @Autowired
   RuleHandler ruleHandler;

「itest」プロファイルで実行する場合、「RuleHandler」の子である「ITestRuleHandler」をワイヤリングする必要があります。「ItestRuleHandler」の場所

    @Component
    @ActiveProfiles(value = "itest")
    public class ITestRuleHandler extends RuleHandler {

ログで、アクティブなプロファイルが「itest」であることがわかります

    System.getProperty("spring.profiles.active")

配線用のログを貼っています

Bean 'vendorServiceRuleExecutor' の挿入された要素を処理しています: capdRuleHandler capdsDecisionManagementRuleExecutor.ruleHandler の AutowiredFieldElement シングルトン Bean 'ITestRuleHandler' のキャッシュされたインスタンスを返します シングルトン Bean 'ruleHandler' の共有インスタンスを作成しています Bean 'ruleHandler' のインスタンスを作成しています Bean 'ruleHandler' を積極的にキャッシュして解決できるようにします潜在的な循環参照 Bean 'ruleHandler' のインスタンスの作成が完了しました Bean 名 'vendorServiceRuleExecutor' から 'ruleHandler' という名前の Bean へのタイプによる自動配線

編集:「RuleHandler」をインターフェイスとして変更したところ、次のエラーが発生しました:

  No qualifying bean of type [c.a.p.d.RuleHandler] is defined: expected single matching bean but found 2: ITestRuleHandler,iTestRuleHandler
4

1 に答える 1

0

プロファイルで実装をITestRuleHandler使用できるようにするにはitest、クラスを次のように宣言する必要があります。

@Component
@Profile("itest")
public class ITestRuleHandler extends RuleHandler

@ActiveProfilesプロファイルのコンポーネントを公開するのではなく、1 つ以上のプロファイルをアクティブにします。これをテスト (または消費) クラスの 1 つに適用して、テスト (または消費) 用のプロファイルをアクティブ化する必要があります。

于 2015-02-27T15:47:05.113 に答える