0

リポジトリ メソッドが null を返すかどうかをチェックするアスペクトを作成するとします。

@Aspect
public class NonNullReturningAspect
{

    @Around("anyPublicRepositoryMethod()  && args(pk,..  )")
    public Object checkNullResults(ProceedingJoinPoint joinPoint, Long pk) throws Throwable
    {    
        Object result = joinPoint.proceed();    
        if (result == null && hasNonNullReturningAnnotation(joinPoint))
        {
            Class<?> returnType = calculateReturnType(joinPoint);
            throw new ObjectNotFoundException(returnType, pk);
        }
        return result;
    }

    // ...

    @Pointcut(value = "execution(public * somepackage..repository..*.*(..))")
    private void anyPublicRepositoryMethod()
    {
    }

    @Pointcut("@annotation(NonNullReturning)")
    private void nonNullReturning()
    {
    }
}

これは、@NonNullReturningアノテーションを持つ任意のメソッドを取り、 で戻りたい場合は自動的に例外をスローしnullます。

私が達成したいのは、これらの側面が吸収するメモリの量と、Spring がそれらの作成に費やす時間のプロファイルを作成することです。

このアスペクトは現在、ローカル スコープで動作しますが、このアスペクトをアプリケーション全体で有効にして Jetty (または Tomcat) を起動すると、どれだけのリソースが消費されるかがわかります。

編集:アプリケーションの起動時間が心配です。

4

1 に答える 1