具有json-b和私有属性可见性的quarkus

时间:2019-12-09 22:03:41

标签: quarkus

在json-b中,我可以使用自定义PropertyVisibilityStrategy。如果使用以下命令,quarkus的行为是什么:

import java.lang.reflect.Field;
import java.lang.reflect.Method;

import javax.json.bind.config.PropertyVisibilityStrategy;

/**
 * Enables private property visibility 
 * and disables method visibility for JSON-B processings.
 */
public final class PrivateVisibilityStrategy implements PropertyVisibilityStrategy {

    @Override
    public boolean isVisible(Field field) {
        return true;
    }

    @Override
    public boolean isVisible(Method method) {
        return false;
    }
}

然后在我可以使用的课程上

@JsonbVisibility(value = PrivateVisibilityStrategy.class)
public class User {
// only fields are used for json mappings because of "PrivateVisibilityStrategy"
..
}

问题:

  1. 在这种情况下,quarkus是否会使用反射(因为它必须使用字段访问)?

  2. 如果是,我应该避免在quarkus中出现这种情况,以避免反射以提高性能?

  3. 我是否应该始终避免通过反射对quarkus中的字段进行访问?还是夸克在幕后这种情况下使用java.lang.invoke.MethodHandles

1 个答案:

答案 0 :(得分:0)

我能够使用这样的类来做到这一点:

@Singleton
public class JsonConfigurator implements JsonbConfigCustomizer {

    public void customize(JsonbConfig config) {
        config.withPropertyVisibilityStrategy(new PrivateVisibilityStrategy());
    }
}

PrivateVisibilityStrategy就像您发布的内容。