クラス AnnotationParameterNameDiscoverer

  • 実装されたすべてのインターフェース:
    org.springframework.core.ParameterNameDiscoverer

    public class AnnotationParameterNameDiscoverer
    extends java.lang.Object
    implements org.springframework.core.ParameterNameDiscoverer
    任意の数の Annotation インスタンスの value 属性を使用してパラメーター名を検索できます。これは、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
    関連事項:
    DefaultSecurityParameterNameDiscoverer
    • コンストラクターの詳細

      • AnnotationParameterNameDiscoverer

        public AnnotationParameterNameDiscoverer​(java.lang.String... annotationClassToUse)
      • AnnotationParameterNameDiscoverer

        public AnnotationParameterNameDiscoverer​(java.util.Set<java.lang.String> annotationClassesToUse)
    • メソッドの詳細

      • getParameterNames

        public java.lang.String[] getParameterNames​(java.lang.reflect.Method method)
        次で指定:
        インターフェース org.springframework.core.ParameterNameDiscoverergetParameterNames 
      • getParameterNames

        public java.lang.String[] getParameterNames​(java.lang.reflect.Constructor<?> constructor)
        次で指定:
        インターフェース org.springframework.core.ParameterNameDiscoverergetParameterNames