Java编写仅在编译时运行的代码?

时间:2018-10-01 08:28:27

标签: java maven

是否可以编写“ Maven插件”或类似的在编译时更改.java的东西?

例如:

@Entity
... class ... {
  @Id
  long id
}

我想注释掉所有注释,并根据实体创建ORM-Mapping.xml /持久性

3 个答案:

答案 0 :(得分:0)

注释主要基于启用/禁用其识别的配置文件。

使用Spring profiles来区分配置类。如果将显示特殊配置文件,则不会识别任何配置类。该解决方案要求根据Spring配置文件对所有配置进行配置。

@Configuration
@Profile("noAnnotations")
public class SomeConfigurationClass

答案 1 :(得分:0)

有可能。 lombok项目修改了已编译的代码,但是没有公开的API可以这样做。 (请参见How does lombok work?)如果必须去除注释,这就是您想要的。在运行时禁用所有注释可能是不合理的。如果您只想从已编译类中发现的注释中生成某些内容,则更为简单

答案 2 :(得分:-1)

您描述的内容听起来像是在寻找C / C ++预处理器/模板化功能?

也许注释处理可以帮助您https://docs.oracle.com/javase/8/docs/api/javax/annotation/processing/Processor.html

除此之外,Spring框架还可以从实体注释中推断出persistence.xml