3

EntrySpring LDAP ODMを使用してマップされた(「エンティティ」)ものがあります。このクラスで単体テストを実行すると、初期化時にコンソールに警告が表示されます。

Mar 9, 2012 2:32:40 PM org.springframework.ldap.odm.core.impl.ObjectMetaData <init>
WARNING: The Entry class Superhero should be declared final

マップされたクラスは次のようになります。

@Entry(objectClasses = {"batman", "superman", "spiderman", "dontworryaboutthese"})
public class Superhero {
    @Id
    @JsonIgnore
    private Name dn;
    ...

この警告に関して、Google検索で関連するものが見つかりません。これをログに記録するSpringコードは次のとおりです。

public ObjectMetaData(Class<?> clazz) {
    if (LOG.isDebugEnabled()) {
        LOG.debug(String.format("Extracting metadata from %1$s", clazz));
    }

    // Get object class metadata - the @Entity annotation
    Entry entity = (Entry)clazz.getAnnotation(Entry.class);
    if (entity != null) {
        // Default objectclass name to the class name unless it's specified
        // in @Entity(name={objectclass1, objectclass2});
        String[] localObjectClasses = entity.objectClasses();
        if (localObjectClasses != null && localObjectClasses.length > 0 && localObjectClasses[0].length() > 0) {
            for (String localObjectClass:localObjectClasses) {
                objectClasses.add(new CaseIgnoreString(localObjectClass));
            }
        } else {
            objectClasses.add(new CaseIgnoreString(clazz.getSimpleName()));
        }
    } else {
        throw new MetaDataException(String.format("Class %1$s must have a class level %2$s annotation", clazz,
                Entry.class));
    }

    // Check the class is final
    if (!Modifier.isFinal(clazz.getModifiers())) {
        LOG.warn(String.format("The Entry class %1$s should be declared final", clazz.getSimpleName()));
    }
    ...

任意の洞察をいただければ幸いです。クラスをfinalとして宣言することは、クラスを拡張できないことを意味することを理解していますが、Spring ODMが気にするのはなぜですか?

4

1 に答える 1

1

セキュリティ上の理由は?

エンティティをサブクラス化することで、他の種類のLDAPエントリをディレクトリに保存し、予期しない動作を引き起こす可能性がありますか?

于 2012-04-18T12:16:52.060 に答える