有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在SpringXML中设置注释属性

我一直在尝试在SpringXML的注释中设置logTime属性。我发现这并不像我最初想的那么容易

@Component
@Retention(RetentionPolicy.RUNTIME)
public @interface LogExecTime {

public boolean logTime() default true;      
}

我曾尝试将@Value注释用于接口,但没有成功:

I)

  @Component
  @Retention(RetentionPolicy.RUNTIME)
  public @interface LogExecTime {
    @Value("#{ConfigureAnnotation.doLogging}")
public boolean logTime() default true;      
  }

而且

II)    
 @LogExecTime(logTime=@Value("#{ConfigureAnnotation.doLogging}"))

有什么想法可以在xml级别做到这一点,或者这在注释依赖项注入中是不可能的


共 (1) 个答案

  1. # 1 楼答案

    是的,那是行不通的

    @LogExecTime(logTime=@Value("#{ConfigureAnnotation.doLogging}"))
    

    甚至都不会编译。注释不是可执行代码,它们只是插入类文件中的额外信息

    你可以这样说:

    @Value("#{ConfigureAnnotation.doLogging}")
    boolean logTime = true;
    

    作为spring托管bean上的真实字段,或者将注释更改为:

    @Component
    @Retention(RetentionPolicy.RUNTIME)
    public @interface LogExecTime {
    
        public String logTime() default "true";
    }
    

    让运行时处理该注释的任何东西也接受spring EL表达式并适当地解析它,您的组件将如下所示:

    @LogExecTime(logTime = "#{ConfigureAnnotation.doLogging}")
    public class SomeComponent {
    
        // blah blah blah
    }