注释如下:
@Pattern(regexp = "^[0-9]+$")
@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTestAnnotation {
}
Run Code Online (Sandbox Code Playgroud)
当我用@MyTestAnnotion注释一个字段时,即使该字段不包含所有数字,该呼叫也会顺利进行。
以下部分已由以下给出的答案解决。主要问题仍然存在。我尝试添加:
@Pattern(regexp = "^[0-9]+$")
@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {})
public @interface MyTestAnnotation {
}
Run Code Online (Sandbox Code Playgroud)
在我的@MyTestAnnotation上,它不会让我输入message属性,但是当我运行代码时,它给出了错误,指出未指定message属性。
如果我将@Pattern批注直接放在字段上,则其行为将符合预期。
我在这里想念什么吗?
该default ""部分在以下代码中的含义是什么?
public @interface MyAnnotation {
String[] names() default "";
}
Run Code Online (Sandbox Code Playgroud)
它等于
String[] names() default new String[0];
Run Code Online (Sandbox Code Playgroud)
?
我必须创建一个可同时添加到类和方法的自定义Logged注释。到目前为止,这是我所做的,但仅适用于方法...
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Logger {
}
Run Code Online (Sandbox Code Playgroud) 我有一个由其他人编写的REST api,其中处理对特定url的请求的方法接受从路径参数填充的一堆参数.
@POST
@Path("/{classid}/{studentid}/details")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@SuppressWarnings("unchecked")
public Response processFile(@FormDataParam("sourceFile") InputStream aStream, @PathParam("classid") String classId, @PathParam("studentid") String studentId, @Context HttpServletRequest httpRequest) {
// Code to do stuff and return a response
}
Run Code Online (Sandbox Code Playgroud)
写这篇文章的人使用了DropWizard,我之前没有使用它的经验.我的任务是通过将studentId字段与db中的值进行比较来验证studentId字段.这将是非常简单的,但我被告知使用自定义验证器.我对编写注释很新,但经过多次挖掘写了这样的注释,
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = StudentIdValidator.StudentIdValidation.class)
public @interface StudentIdValidator {
String message() default "{Invalid Id}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
class StudentIdValidation implements ConstraintValidator<StudentIdValidator, String> {
@Override
public void initialize(StudentIdValidator constraintAnnotation) {
System.out.println("Annotation initialize !!!!!!!!!");
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) …Run Code Online (Sandbox Code Playgroud) 之前处理的是什么 - static阻止或annotation?
例如,像这样处理类的顺序是什么
@CustomAnnotation
class TemplateClass {
static {}
}
Run Code Online (Sandbox Code Playgroud)
class有一些annotation和static块.
我偶然发现我不小心这样做了:
@javax.annotation.Nullable
@javax.validation.constraints.NotNull
Run Code Online (Sandbox Code Playgroud)
编译器没有抱怨,一切似乎都很好。
现在,我想知道当两个或更多注释相互矛盾时内部发生了什么。此外,顺序重要吗?
这是
@Nullable
@NotNull
Run Code Online (Sandbox Code Playgroud)
比这一样吗?
@NotNull
@Nullable
Run Code Online (Sandbox Code Playgroud)
一般来说,这对注释如何起作用?谁赢?
编辑:我正在寻找一个一般性的答案,不一定关于这两个注释
我正在尝试在弹簧过滤器链中插入(在第一个位置)一个简单的自定义Cors过滤器。
如果我这样做
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CorsFilter implements Filter {
Run Code Online (Sandbox Code Playgroud)
它运行完美,我可以通过在Spring的ServletHandler.java中放置一个断点来验证它,
chain=getFilterChain(baseRequest, target, servlet_holder);
Run Code Online (Sandbox Code Playgroud)
我只是想知道是否不希望使用@Componenent and @Order,而是在Application上下文中定义Filter bean。如何设置过滤器的顺序?
我正在阅读有关进行Spring配置的方法,并且知道有三种方法可以执行相同的操作:
1)基于XML的简单.
2)使用基于注释.
3)基于Java的配置.
我对#1方法感到满意.基于纯XML.
现在,我尝试使用方法#2即.Using annotation based.
例如:
@Component("circleID")
public class Circle {
@Autowired
private Point point;
@Override
public String toString() {
return "Circle [point=" + point + "]";
}
}
Run Code Online (Sandbox Code Playgroud)
我期望使用Annotation不需要任何xml文件,但我们仍然有以下XML文件.
<context:annotation-config/>
<context:component-scan base-package="com.example.point , com.example.shapes" />
Run Code Online (Sandbox Code Playgroud)
所以不使用注释方法我们提供部分信息,一些是XML,一些是Annotations?
我不清楚这一点,任何人都可以帮助我清除这个疑问吗?
我正在尝试使用函数注释,希望我的编辑器会更好地进行重构。但是,我遇到了以下问题:
我有一个抽象的基类算法。
class Algorithm(metaclass=ABCMeta):
def __init__(self):
self.foo = 'bar'
Run Code Online (Sandbox Code Playgroud)
我也有一个使用Algorithm子类实例的函数
def get_foo(foo_algorithm):
return foo_algoritm.foo
Run Code Online (Sandbox Code Playgroud)
输入foo_algorithm可以是Algorithm的任何子类的实例。我如何合理地注释此输入?我正在寻找一些可能的方法:
def get_foo(foo_algorithm: subclassof(Algorithm)):
return foo_algoritm.foo
Run Code Online (Sandbox Code Playgroud)
但是我找不到正确的方法来做到这一点。
我是注释的新手,我有使用自定义注释注释的FXMLController类,将这些类发送到工厂以从注释中获取值,但它始终为null~
注释:
public @interface FXMLController {
String value() default "";
}
Run Code Online (Sandbox Code Playgroud)
用法:
@FXMLController(value=CommonConstants.SPLASH_SCREEN)
public class SplashScreenController{ ....... )
Run Code Online (Sandbox Code Playgroud)
获得价值:
Annotation annotation = controller.getAnnotation(FXMLController.class);
FXMLController fxmlController = (FXMLController) annotation;
Run Code Online (Sandbox Code Playgroud)
annotations ×10
java ×7
spring ×2
dropwizard ×1
filter ×1
interface ×1
jersey ×1
nullable ×1
python ×1
python-3.x ×1
spring-boot ×1
static ×1
type-hinting ×1
validation ×1