Wicket の @MountPath

昔、Javaアノテーションが登場し、Spring が流行り、アノテーションによるコーディングが脚光を浴びた時があった。
その頃の影響が残ってたのか、Wicket-Stuff のプロジェクトには、8.0.0 になっても、
まだ、wicketstuff-annotation というのが、存在することはする。
がしかし。。。。いろいろあるのだが、その前に、アノテーションでマウントするページを記述すると
Pageクラスソース毎に書くので分散してしまう。→ 1つのソースでの管理は、WebApplication の init() で
スタンダードな、mountPage や、mount メソッドを書いた方が管理しやすい。

Maven で、wicketstuff-annotation version 8.0.0 を 取ってくるように pom.xml を書く、
Page class に、

@MountPath("/sample")
public class SamplePage extends WebPage{

WebApplication の init() に、

new AnnotatedMountScanner().scanPackage("org.samples").mount(this);

を記述して起動したら、
java.lang.IncompatibleClassChangeError:
class org.springframework.core.type.classreading.ClassMetadataReadingVisitor
has interface org.springframework.asm.ClassVisitor as super class

久々にこれに遭遇。。。Spring か!!。。。
どこでどう依存していてこの後方互換性の問題になったのかまで詳細に調べる気になれなくて、
Maven pom.xml の依存関係を修正することに。。
修正前、、
f:id:posturan:20180824223930j:plain

pom.xml で、spring-core を除くように exclusion 文を入れて修正する。。

<dependency>
   <groupId>org.wicketstuff</groupId>
   <artifactId>wicketstuff-annotation</artifactId>
   <version>8.0.0</version>
   <exclusions>
      <exclusion>
         <groupId>org.springframework</groupId>
         <artifactId>spring-core</artifactId>
      </exclusion>
   </exclusions>
</dependency>

修正後、、、
f:id:posturan:20180824224217j:plain

これで、無事、起動できて、@MountPath も、href = "/" + Webコンテキスト名 + @MountPath で指定したパス
に対してページ表示できるようになった。

尚、Annotation · wicketstuff/core Wiki · GitHub
この Wiki に書いてある他のアノテーションは、既に廃止、消滅している。
まあ、使わないだろうということで消滅したんだろうけど、、
Wikcet 8.0.0 の本体にもこの、アノテーション機能が入らなかったのは、余程、不評だったのだろう。。。
やはり、管理、保守できないのかな?視点がズレてまうのかな?
いったい、昔のJavaのアノテーションのあの騒ぎは、何だったのだろう。。。と思うが、
Spring-boot の開発がまだ存在すると、稀に聞くし、、
バランス良く使えばいいのにと、いつも思う。