クラス AnnotationParameterNameDiscoverer

java.lang.ObjectSE
org.springframework.security.core.parameters.AnnotationParameterNameDiscoverer
実装されたすべてのインターフェース:
org.springframework.core.ParameterNameDiscoverer

public class AnnotationParameterNameDiscoverer extends ObjectSE implements org.springframework.core.ParameterNameDiscoverer
任意の数の AnnotationSE インスタンスの値属性を使用してパラメーター名を検索できます。これは、Spring Security のメソッドレベルセキュリティを備えたインターフェースのパラメーター名を検出する必要がある場合に役立ちます。例: 次のことを考慮してください。
 import org.springframework.security.access.method.P;

 @PostAuthorize("#to == returnObject.to")
 public Message findMessageByTo(@P("to") String to);
 
次の AnnotationParameterNameDiscoverer を使用してこれを可能にすることができます。
 ParameterAnnotationsNameDiscoverer discoverer = new ParameterAnnotationsNameDiscoverer(
                "org.springframework.security.access.method.P");
 

ユーザーは AnnotationParameterNameDiscoverer を PrioritizedParameterNameDiscoverer と組み合わせて使用するのが一般的です。実際、Spring Security の DefaultSecurityParameterNameDiscoverer(メソッドレベルのセキュリティでデフォルトで使用されます)は PrioritizedParameterNameDiscoverer を継承し、クラスパスで見つかった場合、PSpring Data の Param アノテーションの両方を自動的にサポートします。

単一のパラメーター名にサポートされているアノテーションがある場合、すべてのメソッドは AnnotationParameterNameDiscoverer を使用して解決されることに注意することが重要です。例: 次のことを考慮してください。

 import org.springframework.security.access.method.P;

 @PostAuthorize("#to == returnObject.to")
 public Message findMessageByToAndFrom(@P("to") User to, User from);
 

アノテーションが含まれているパラメーターは 1 つだけなので、前のサンプルでパラメーターを見つけた結果は new String[] { "to", null} になります。これは主に、PrioritizedParameterNameDiscoverer のフォールバックがオールオアナッシング操作であるという事実によるものです。

導入:
3.2
関連事項:
  • コンストラクターの詳細

    • AnnotationParameterNameDiscoverer

      public AnnotationParameterNameDiscoverer(StringSE... annotationClassToUse)
    • AnnotationParameterNameDiscoverer

      public AnnotationParameterNameDiscoverer(SetSE<StringSE> annotationClassesToUse)
  • メソッドの詳細

    • getParameterNames

      public StringSE[] getParameterNames(MethodSE method)
      次で指定:
      インターフェース org.springframework.core.ParameterNameDiscoverergetParameterNames 
    • getParameterNames

      public StringSE[] getParameterNames(ConstructorSE<?> constructor)
      次で指定:
      インターフェース org.springframework.core.ParameterNameDiscoverergetParameterNames