Java 在SpringXML中设置注释属性

Java 在SpringXML中设置注释属性,java,spring,Java,Spring,我一直在尝试在SpringXML的注释中设置logTime属性。我发现这并不像我最初想的那么容易 @Component @Retention(RetentionPolicy.RUNTIME) public @interface LogExecTime { public boolean logTime() default true; } 我尝试在界面上使用@Value注释,但运气不佳: I) @Component @Retention(RetentionPolicy.RU

我一直在尝试在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级别做到这一点,或者这在注释依赖项注入中是不可能的吗?

是的——这永远不会奏效

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

嗨,伊斯考林<代码>@Value(“#{ConfigureAnnotation.doLogging}”)布尔logTime=true在注释内部对我来说不起作用,但是
logTime=“#{ConfigureAnnotation.doLogging}”
看起来可以。我的方面读取它,但只打印“#{ConfigureAnnotation.doLogging}”,而不是我在xml中设置的值“true”。你能告诉我你将如何做到这一点吗?你需要做一些事情与价值分配给注释。在本例中,该值为#{ConfigureAnnotation.doLogging},因此您需要实例化spring EL解析器来解析该值,或者解析出您自己的密钥,等等,比如System.getProperty(annotation.value().substring(2,annotation.value().size()-3)