私が知りたいのは、「Springの@Versionedアノテーションが付いているすべてのクラス/メソッド」でした。 Springコンテキストでメソッドレベルのカスタム注釈を見つけよう
は、私は私のカスタムアノテーションを作成し@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Versioned {
.....
}
、として私はのような方法を見つけるためにJavaリフレクションを使用したときに完璧にの作品この注釈:私は春にアクセスしたとき
for(Method m: obj.getClass().getMethods()){
if(m.isAnnotationPresent(Versioned.class)){
.... // Do something
}
をしかし、それは動作しません。豆と同様のチェックを試みる:
public class VersionScanner implements ApplicationContextAware{
public void setApplicationContext(ApplicationContext applicationContext){
for(String beanName: applicationContext.getBeanDefinitionNames()){
for(Method m: applicationContext.getBean(beanName).getClass().getDeclaredMethods()){
if(m.isAnnotationPresent(Versioned.class){
// This is not WORKING as expected for any beans with method annotated
}
}
}
}
}
実際、このコードは@RequestMappingなどの他の注釈を検索します。カスタム注釈で間違っていることがわかりません。
Beanはプロキシされていますか? –
私は言いたいのですが、SOFは最低10文字必要です:-) – kamoor
Ok、再現性のある例は最小です。 –