0

logTimeSpring xml の注釈に属性を設定しようとしています。これは私が最初に考えたほど簡単ではないことがわかりました。

@Component
@Retention(RetentionPolicy.RUNTIME)
public @interface LogExecTime {

public boolean logTime() default true;      
}

@Valueインターフェイスでアノテーションを使用しようとしましたが、うまくいきませんでした:

I)

  @Component
  @Retention(RetentionPolicy.RUNTIME)
  public @interface LogExecTime {
    @Value("#{ConfigureAnnotation.doLogging}")
public boolean logTime() default true;      
  }

そしてまた

II)    
 @LogExecTime(logTime=@Value("#{ConfigureAnnotation.doLogging}"))

xmlレベルでこれを行う方法はありますか、それとも注釈依存性注入では不可能ですか?

4

1 に答える 1

1

ええ-それはうまくいきません。

@LogExecTime(logTime=@Value("#{ConfigureAnnotation.doLogging}"))

コンパイルすることさえありません。注釈は実行可能なコードではなく、ただのマーカーです。クラス ファイル全体に挿入される追加の情報です。

あなたはこれを置くことができます:

@Value("#{ConfigureAnnotation.doLogging}")
boolean logTime = true;

どこかのSpring Managed Beanの実際のフィールドとして、または注釈を次のように変更します。

@Component
@Retention(RetentionPolicy.RUNTIME)
public @interface LogExecTime {

    public String logTime() default "true";
}

実行時にそのアノテーションを処理しているものは何でも、スプリング EL 式を受け入れて適切に解決すると、コンポーネントは次のようになります。

@LogExecTime(logTime = "#{ConfigureAnnotation.doLogging}")
public class SomeComponent {

    // blah blah blah
}
于 2013-08-04T20:34:15.820 に答える