Почему бин конфигурации Spring стал другим бином, имя класса которого заканчивается на $$ EnhancerBySpringCGLIB - PullRequest
0 голосов
/ 21 сентября 2019

Я определил класс конфигурации Spring Bean в моем проекте Spring-Boot следующим образом:

@Configuration
public class GgjSsoPropsConfig {}

Но после запуска приложения Spring-Boot я пытаюсь оценить имя класса этого компонента EJB,затем я получил:

// System.out.print(this.getClass().getSimpleName())
GgjSsoPropsConfig$$EnhancerBySpringCGLIB$$788ad0f1

Кажется, мой бин превратился в другой "прокси-бин"?
Кстати, я никогда не включаю в своем проекте функцию AOP.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2019

Ответ - да, и я нашел ответ в этом методе обработки бобов:
org.springframework.context.annotation.ConfigurationClassPostProcessor#enhanceConfigurationClasses

Вот официальный комментарий для этого метода:

Постобработка BeanFactory в поисках класса конфигурации BeanDefinitions;
затем любые кандидаты улучшаются с помощью {@link ConfigurationClassEnhancer}.

На самом деле этот новый сгенерированный компонент-энхансер является просто подклассом моегокласс исходной конфигурации GgjSsoPropsConfig, и он наследует все методы и поля родительского класса, и добавил некоторые дополнительные возможности Enhancer Spring.

0 голосов
/ 21 сентября 2019

Да, это так.Spring AOP использует CGLIB (как в этом случае) или динамический прокси для создания и добавления экземпляров компонентов в контекст приложения.

https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch08s06.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...