2017-02-28 6 views
1

私はアノテーションベースの設定を使用してHibernateとSpringを統合するアプリケーション(Spring 4 MVC + Hibernate 4 + MySQL + Maven統合の例)を持っています。 @Serviceアノテーションで宣言さBeanを取得するためにSpring AOP。 JoinPointからBean名を取得する

Stream.of(joinPoint.getTarget().getClass().getAnnotationsByType(Service.class)) 
     .forEach(q -> logger.info(q.value())); 

:私はあなたがこれを使用することができます

@Aspect 
public class TDKAspectLogger { 

    private Logger logger = Logger.getLogger(getClass()); 

    @Before(“execution(void set*(*))”) 
    public void logInfo(JoinPoint point) { 
      logger.info(“changing bean -> ”); 
    } 
} 
+2

私は春のユーザーではないので、春の豆についてよく分かりません。しかし、クラス名を取得するのが満足であれば、私はあなたを助けることができます。 – kriegaex

答えて

2

....できるかどうジョインポイントからBean名を取得したいです。

ただし、この方法ですべての豆が作成されるわけではありません。いくつかは@Bean注釈付きメソッドによって作成され、一部は手動でコンテキストに追加することもできます。だから、@Component@Service@QualifierなどでBeanクラスに注釈をつけて、@ComponentScanを使うと、あなたが望むものが得られるかもしれません。コンテキスト内で現在使用可能なすべてのBeanを取得することは普遍的な方法ではないことを覚えておく必要があります(アノテーション/メタデータのないクラスでは機能しません)。

関連する問題