标签: annotations

@Pattern的元注释在春季不起作用

注释如下:

@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批注直接放在字段上,则其行为将符合预期。

我在这里想念什么吗?

java annotations bean-validation

1
推荐指数
1
解决办法
1027
查看次数

注释声明中String []的默认值是什么?

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)

java annotations

1
推荐指数
1
解决办法
562
查看次数

如何为类和方法创建自定义注释?

我必须创建一个可同时添加到类和方法的自定义Logged注释。到目前为止,这是我所做的,但仅适用于方法...

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Logger {

}
Run Code Online (Sandbox Code Playgroud)

java annotations interface

1
推荐指数
1
解决办法
497
查看次数

如何使用带有dropwizard的自定义验证器?

我有一个由其他人编写的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)

java validation annotations jersey dropwizard

1
推荐指数
1
解决办法
3639
查看次数

java处理注释和静态块的顺序

之前处理的是什么 - static阻止或annotation

例如,像这样处理类的顺序是什么

@CustomAnnotation
class TemplateClass {
    static {}
}
Run Code Online (Sandbox Code Playgroud)

class有一些annotationstatic块.

java static annotations

1
推荐指数
1
解决办法
374
查看次数

@NotNull和@Nullable,与Java注释矛盾

我偶然发现我不小心这样做了:

@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)

一般来说,这对注释如何起作用?谁赢?

编辑:我正在寻找一个一般性的答案,不一定关于这两个注释

java annotations nullable

1
推荐指数
1
解决办法
849
查看次数

SpringBoot如何设置不带注释的过滤器顺序

我正在尝试在弹簧过滤器链中插入(在第一个位置)一个简单的自定义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 annotations filter spring-boot

1
推荐指数
1
解决办法
5501
查看次数

我们是否需要xml文件来使用Annotation进行Spring配置?

我正在阅读有关进行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?

我不清楚这一点,任何人都可以帮助我清除这个疑问吗?

spring annotations

1
推荐指数
1
解决办法
1234
查看次数

抽象类的子类的函数注释

我正在尝试使用函数注释,希望我的编辑器会更好地进行重构。但是,我遇到了以下问题:

我有一个抽象的基类算法。

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)

但是我找不到正确的方法来做到这一点。

python annotations type-hinting python-3.x

1
推荐指数
1
解决办法
854
查看次数

Java - get注释始终为null

我是注释的新手,我有使用自定义注释注释的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)

在此输入图像描述

java annotations

1
推荐指数
1
解决办法
234
查看次数