CachedIntrospectionResults - не сильно кэширующий класс, потому что он не безопасен для кэширования. - PullRequest
1 голос
/ 07 марта 2020

Кто-нибудь знает, что означает это предупреждение?

o.s.b.CachedIntrospectionResults - Not strongly caching class because it is not cache-safe

Это предупреждение зарегистрировано в моем приложении Play Framework. Кажется, это как-то связано с этим классом от весны, но я не могу найти больше информации ...

1 Ответ

0 голосов
/ 08 марта 2020

Кажется, что сообщение выдается из метода org.springframework.beans.CachedIntrospectionResults#forClass библиотеки spring-beans, которая использует метод org.springframework.util.ClassUtils#isCacheSafe библиотеки spring-core для проверки того, является ли указанный класс безопасным для кэша (он проверяет, является ли класс загружается тем же загрузчиком классов, что и класс CachedIntrospectionResults).

CachedIntrospectionResults#forClass:


/**
* Create CachedIntrospectionResults for the given bean class.
* @param beanClass the bean class to analyze
* @return the corresponding CachedIntrospectionResults
* @throws BeansException in case of introspection failure
*/
static CachedIntrospectionResults forClass(Class<?> beanClass) {
    ...
    if (ClassUtils.isCacheSafe(...)) {
            ...
        }
        else {
            ...
                logger.debug("Not strongly caching class [" + beanClass.getName() + "] because it is not cache-safe");
            }
            ...
        }

ClassUtils#isCacheSafe:

/**
* Check whether the given class is cache-safe in the given context,
* i.e. whether it is loaded by the given ClassLoader or a parent of it.
* @param clazz the class to analyze
* @param classLoader the ClassLoader to potentially cache metadata in
* (may be {@code null} which indicates the system class loader)
*/
public static boolean isCacheSafe(Class<?> clazz, @Nullable ClassLoader classLoader) {
...

Возможно, источники CachedIntrospectionResults и ClassUtils Классы прояснят проблему.

...