Мы столкнулись с чем-то подобным при обновлении наших библиотек в нашем текущем Sprint. Все наши неудачные модульные тесты были связаны с классами, которые мы внедряли, но не были привязаны к модулю.
(Что не было проблемой при использовании Guice 4.0).
Мы склонны привязывать наши классы только в том случае, если мы привязываемся к интерфейсу или какому-то специальному требованию. Поэтому, если бы у нас был простой класс с конструктором без аргументов или с аннотацией @Inject, мы бы не связывали его в модуле.
public class AA {
public AA() {
}
@Transactional
public void test() {
System.out.println("" + getClass().getName());
}
}
Если бы был введен класс AA, вызов test() вывел бы
package.test.AA$$EnhancerByGuice$$e2d19b62
После обновления до Guice 4.1 вывод
package.test.AA
Добавление следующего в модуль изменяет инъекцию обратно на прокси. Вот как @Transactional работает с использованием АОП
bind(AA.class);
person
WarrenB SA
schedule
15.08.2017