gpt4 book ai didi

java - 在spring xml中设置注解属性

转载 作者:行者123 更新时间:2023-12-01 14:16:58 24 4
gpt4 key购买 nike

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

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

public boolean logTime() default true;
}

我尝试在接口(interface)中使用 @Value 注释,但没有成功:

I)

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

还有

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

有什么想法可以在 xml 级别执行此操作吗?或者这对于注释依赖项注入(inject)来说是不可能的吗?

最佳答案

是的——那是行不通的。

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

关于java - 在spring xml中设置注解属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18047186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com