我正在使用Axon Framework,可以在其中用@Aggregate
注释 domain 类(该类通过Spring的@Component进行元注释)。然后,我必须为自己拥有的每个私有方法/字段都道歉,方法是将它们显式标记为final
。
对于我来说,我只是将类标记为打开是很好的,所以我想在@Aggregate
插件中排除spring
的同时手动进行操作,但是我找不到方法这样做。
答案 0 :(得分:1)
根据documentation,spring
插件仅在支持元注释的同时通过列出Spring注释在内部使用了all-open
。因此,我们正是这样做的,但是我们没有指定列表@Component
,因此在我们的代码中,我们必须使用构造型(存储库,服务等)。这样,它不会拾取@Aggregate
:
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<configuration>
<compilerPlugins>
<!-- instead of 'spring' -->
<plugin>all-open</plugin>
</compilerPlugins>
<pluginOptions>
<!-- todo check up on https://stackoverflow.com/questions/56537496 -->
<!-- listing all spring annotations except @Component -->
<option>all-open:annotation=org.springframework.stereotype.Service</option>
<option>all-open:annotation=org.springframework.stereotype.Controller</option>
<option>all-open:annotation=org.springframework.data.repository.Repository</option>
<option>all-open:annotation=org.springframework.context.annotation.Configuration</option>
<option>all-open:annotation=org.springframework.boot.test.context.SpringBootTest</option>
<option>all-open:annotation=org.springframework.cache.annotation.Cacheable</option>
<option>all-open:annotation=org.springframework.transaction.annotation.Transactional</option>
<option>all-open:annotation=org.springframework.scheduling.annotation.Async</option>
</pluginOptions>
</configuration>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-allopen</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
</plugin>