首页 > 解决方案 > 使用属性文件中的值进行自定义注释时出现错误 - 标记“)”上的语法错误,此标记后应为默认值

问题描述

我正在创建一个自定义注释,如下所示,

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@CrossOrigin
public @interface CrossOriginsList {

    @Value("#{'${allowed.origins}'.split(',')}")
    //public static final List<String> rawOrigins;
    public static final String[] rawOrigins = ProcessOrigins.getOrigin();
    
    public String[] crossOrigins() default {
        int size = rawOrigins.size();
        String[] originArray = new String[size];
        return rawOrigins.toArray(originArray);            
    };   
}

在我的 application.properties 我定义如下,

allowed.origins=http://localhost:8080,http://localhost:4200

但是得到编译器错误,

Syntax error on token ")", default expected after this token

在 Eclipse 的下一行出现错误,

public String[] crossOrigins() default {

如何解决此错误?

编辑 下面是处理器类,

public class ProcessOrigins {

    @Value("#{'${allowed.origins}'.split(',')}")
    public static List<String> rawOrigins; 
    
    public static String[] getOrigin() {
        int size = rawOrigins.size();
        String[] originArray = new String[size];
        return rawOrigins.toArray(originArray);
    }   
}

标签: spring-bootjava-8annotations

解决方案


推荐阅读