Ответ
Нет, не следует. Управление зависимостями должно быть минимальным и явным. CGLIB обычно является транзитивной зависимостью таких фреймворков, как Spring (для AOP) или Hibernate (для прокси lazy-сущностей).
Проблемы лишних зависимостей:
- Увеличение размера артефакта.
- Риск конфликтов версий.
- Усложнение анализа уязвимостей (security scan).
- Затруднённое понимание реальных зависимостей проекта.
Если CGLIB не требуется (например, в Spring используются только JDK Dynamic Proxies для интерфейсов), его можно исключить:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<exclusions>
<exclusion>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</exclusion>
</exclusions>
</dependency>
Важно: Не исключайте CGLIB, если используете фичи, требующие наследования классов (например, @Configuration без интерфейсов, проксирование @Transactional на не-интерфейсных методах).