我一直在尝试在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级别执行此操作,或者注释依赖项注入无法实现这一点?
答案 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
}