博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
他山之石
阅读量:4089 次
发布时间:2019-05-25

本文共 2580 字,大约阅读时间需要 8 分钟。

学习项目: 

1、自定义flag参数校验器

(1)注解

@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.FIELD,ElementType.PARAMETER})@Constraint(validatedBy = FlagValidatorClass.class)public @interface FlagValidator {    String[] value() default {};    String message() default "flag is not found";    Class
[] groups() default {}; Class
[] payload() default {};}

(2)校验

public class FlagValidatorClass implements ConstraintValidator
{ private String[] values; @Override public void initialize(FlagValidator flagValidator) { this.values = flagValidator.value(); } @Override public boolean isValid(Integer value, ConstraintValidatorContext constraintValidatorContext) { boolean isValid = false; if(value==null){ //当状态为空时使用默认值 return true; } for(int i=0;i

(3)使用

@FlagValidator({"0","1"})    private Integer filterType;

2、配置jackson不序列化null属性

@Configurationpublic class JacksonConfig {    @Bean    @Primary    @ConditionalOnMissingBean(ObjectMapper.class)    public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {        ObjectMapper objectMapper = builder.createXmlMapper(false).build();        // 通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化        // Include.Include.ALWAYS 默认        // Include.NON_DEFAULT 属性为默认值不序列化        // Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量        // Include.NON_NULL 属性为NULL 不序列化,就是为null的字段不参加序列化        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);        // 字段保留,将null值转为""//        objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer()//        {//            @Override//            public void serialize(Object o, JsonGenerator jsonGenerator,//                                  SerializerProvider serializerProvider)//                    throws IOException, JsonProcessingException//            {//                jsonGenerator.writeString("");//            }//        });        return objectMapper;    }}

利用反射机制 获取 对象属性

/**	 * 循环向上转型,获取对象的DeclaredField.	 * @throws NoSuchFieldException 如果没有该Field时抛出.	 */	@SuppressWarnings("rawtypes")	public static Field getDeclaredField(Class clazz, String propertyName) throws NoSuchFieldException {		for (Class superClass = clazz; superClass != Object.class; superClass = superClass.getSuperclass()) {			try {				return superClass.getDeclaredField(propertyName);			} catch (NoSuchFieldException e) {				// Field不在当前类定义,继续向上转型			}		}		throw new NoSuchFieldException("No such field: " + clazz.getName() + '.' + propertyName);	}

 

转载地址:http://tlbii.baihongyu.com/

你可能感兴趣的文章
启用SELinux时遇到的问题
查看>>
No devices detected. Fatal server error: no screens found
查看>>
db db2 base / instance database tablespace container
查看>>
db db2_monitorTool IBM Rational Performace Tester
查看>>
Android 解决TextView设置文本和富文本SpannableString自动换行留空白问题
查看>>
Android自定义View实现商品评价星星评分控件
查看>>
postgresql监控工具pgstatspack的安装及使用
查看>>
postgresql减少wal日志生成量的方法
查看>>
swift中单例的创建及销毁
查看>>
获取App Store中App的ipa包
查看>>
利用runtime给类别添加属性
查看>>
本地推送
查看>>
UIImage存为本地文件与UIImage转换为NSData
查看>>
[转]打印质数的各种算法
查看>>
[转]javascript with延伸的作用域是只读的吗?
查看>>
php的autoload与global
查看>>
IE不支持option的display:none属性
查看>>
[分享]mysql内置用于字符串型ip地址和整数型ip地址转换函数
查看>>
Https加密及攻防
查看>>
Java生成随机不重复推广码邀请码
查看>>