Java 在SpringXML中设置注释属性
我一直在尝试在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
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)