版权声明:本文为博主原创文章,转载请说明出处 https://blog.csdn.net/u010002184/article/details/82228239
第一种:boolean value() default true;
@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonIgnore
{
/**
* Optional argument that defines whether this annotation is active
* or not. The only use for value 'false' if for overriding purposes
* (which is not needed often); most likely it is needed for use
* with "mix-in annotations" (aka "annotation overrides").
* For most cases, however, default value of "true" is just fine
* and should be omitted.
*/
boolean value() default true;
}
@JsonIgnore//默认是true,与@JsonIgnore(true)同义,虽然没有写出value但是默认会使用value方法
private Integer id;
@JsonIgnore(value = false)
private String name;
第二种:String filterName() default "";
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebFilter {
/**
* @return description of the Filter, if present
*/
String description() default "";
/**
* @return display name of the Filter, if present
*/
String displayName() default "";
/**
* @return array of initialization params for this Filter
*/
WebInitParam[] initParams() default {};
/**
* @return name of the Filter, if present
*/
String filterName() default "";
/**
* @return small icon for this Filter, if present
*/
String smallIcon() default "";
/**
* @return the large icon for this Filter, if present
*/
String largeIcon() default "";
/**
* @return array of Servlet names to which this Filter applies
*/
String[] servletNames() default {};
/**
* A convenience method, to allow extremely simple annotation of a class.
*
* @return array of URL patterns
* @see #urlPatterns()
*/
String[] value() default {};
/**
* @return array of URL patterns to which this Filter applies
*/
String[] urlPatterns() default {};
/**
* @return array of DispatcherTypes to which this filter applies
*/
DispatcherType[] dispatcherTypes() default {DispatcherType.REQUEST};
/**
* @return asynchronous operation supported by this Filter
*/
boolean asyncSupported() default false;
}
@WebFilter(filterName = "myFilter", urlPatterns = "/*",
initParams = {
@WebInitParam(name = "exclusions", value = "*.js,*.gif,*.jpg")//忽略资源
}
)
public class MyFilter extends WebStatFilter {
}
多个方法之间用逗号分隔。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebInitParam {
/**
* @return name of the initialization parameter
*/
String name();
/**
* @return value of the initialization parameter
*/
String value();
/**
* @return description of the initialization parameter
*/
String description() default "";
}
第三种:String[] urlPatterns() default {};
urlPatterns = "/*", 正确
urlPatterns = {"/*"}, 正确
urlPatterns = new String[]{"/*"} ,错误,属性要是常量才行
第四种:public Class<? extends JsonSerializer> using() default JsonSerializer.None.class;
@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@com.fasterxml.jackson.annotation.JacksonAnnotation
public @interface JsonSerialize
{
// // // Annotations for explicitly specifying deserializer
/**
* Serializer class to use for
* serializing associated value. Depending on what is annotated,
* value is either an instance of annotated class (used globablly
* anywhere where class serializer is needed); or only used for
* serializing property access via a getter method.
*/
@SuppressWarnings("rawtypes") // to work around JDK8 bug wrt Class-valued annotation properties
public Class<? extends JsonSerializer> using() default JsonSerializer.None.class;
.................
}
@JsonSerialize(using = UserSerializer.class)//UserSerializer可以是自己定义的类
@JsonIgnoreProperties({"id", "name"}) //序列化时忽略指定的属性,与 @JsonIgnore冲突时,以此处为准
public class User {
............
}