在spring xml中设置注释属性

时间:2013-08-04 20:20:17

标签: java spring

我一直在尝试在spring xml中的注释中设置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 个答案:

答案 0 :(得分: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";
}

并且处理注释在运行时也接受弹簧EL表达式并适当地解决它,并且您的组件看起来像这样:

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

    // blah blah blah
}