我在我的一个项目中有这个注释类。
注释类由我定义。
问题:我可以代替String"TP_REPORT"
使用一些属性
,其值在编译时未知,但仅在运行时未知吗?
@PhoenixTable(tableName="TP_REPORT")
public class TPData {
...
}
作为参考,这里是我的注释类型的定义。
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface PhoenixTable {
public String tableName();
}
您不能提供任何对象引用,因为在声明注释时没有任何对象。从Oracle的docs(单击此处):
返回类型仅限于前面类型的基元、字符串、类、枚举、注释和数组。
但是如果您绝对需要一些动态的东西,您可以给出一个类并使用该类从某个属性文件中读取。虽然这可能不是您的最佳解决方案,但它可能会为您提供一些需要研究的东西。
public interface TableNameProp{
public static String getTableName(){
return "TP_REPORT"; //or read from some prop and use it
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface PhoenixTable {
public Class<TableNameProp> tableProps();
}
@PhoenixTable(tableProps=TableNameProp.class)
public class TPData {
...
}
不。这在Java中是不可能的。注释中的值应在编译时保持不变。
我有以下课程: 我从控制器调用方法test(): 然而,spring并没有注入构建。版本值,即使类具有组件注释。 我在控制器中使用相同的属性,它工作正常。 我做错了什么?
我想根据“配置文件”设置注释的值。 让我举个例子来解释; 在上面的例子中,我们可以看到活动的“配置文件”是PROD,但是假设我们想要使用DEV配置文件,我们将不得不注释来自PROD的@Table注释,并取消注释DEV@Table注释。 如果这只针对一个实体,那不会是一个问题,但我有很多实体都有这种情况,所以我不认为这是处理这种即兴“简介”的方式。 你知道有什么办法可以解决这种情况吗?
我最近开始使用带有Page对象模式的Selenium2和Page Factory。我使用@FindBy注释声明了WebElements,这些注释在初始化类时由PageFactory初始化。但是,我希望将@findby注释与locators.properties文件一起使用。不幸的是,我似乎无法做到这一点,因为注释被限制为只允许常量表达式。一般来说,这似乎是Java注释的一个限制,但我只是想知道是否
例如,我有一个bean类 我想设置这个属性的值。 在Xml配置中,我可以 我如何实现同样的事情,即设置属性的值使用Java注释?现在我已经读到,我们可以使用@Value注释使用一些属性文件,但它不能不使用属性文件,做的方式,我通过xml文件?或者使用属性文件是必要的? 我可以通过包含
我试图向自定义注释中注入一个值,但Spring似乎没有进行评估。
我们一直在使用Spring@Value注释来注入属性值。我们有一个约定来命名属性名称,以匹配它们注入的java字段。这带来了不必要的工作,即每个ConfigBean的java字段都需要用@Value注释。 我正在寻找一种方法,用新的注释注释java类(比如说ConfigBean),让一些后处理器读取这些bean的属性名称,并自动注入属性值。 我正在寻找一些关于如何在没有@Value注释的情况下实现