Внешняя банка не работает "Не удалось автоматически" - PullRequest
0 голосов
/ 01 ноября 2018

В IntelliJ IDEA я получаю следующую ошибку:

Не удалось автоматически подключить. Не найдено бобов типа ExternalClass. Информация о проверке: Проверяет проблемы с автопроводкой в ​​классе бобов

Предыстория: я извлек часть кода и загрузил его как артефакт, когда я попытался использовать его в своем "основном" коде, я получил ошибку и не могу скомпилировать с maven.

@Autowired
public ClassName (ExternalClass externalClass){
   this.externalClass = externalClass;
}

Артефакт является зависимостью в файле POM и хорошо отображается при автозаполнении.

Я пробовал с несколькими классами, и ошибка появляется каждый раз.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Я обнаружил проблему в конце концов и делюсь информацией на тот случай, если кто-то другой получит такую ​​же ошибку. Для правильной работы autowire и spring артефакту требовалась та же структура пакета, что и в основном проекте. Пример: если основная структура пакета проекта:

com.domainname.something.myproject

Артефакт должен быть:

com.domainname.something.myproject.artifactname
0 голосов
/ 01 ноября 2018

Вам необходимо определить @Configuration в извлеченном модуле и указать путь сканирования для модуля.

@Configuration
// add any packages where you have bean definitions here (ex: ExtractedClass package)
@ComponentScan(basePackages = {"..."})
public class ExtractedConfig {

    // ...

}

Затем в модуле, где вы используете зависимость, импортируйте конфигурацию.

@Configuration
@Import(ExtractedConfig.class)
public class MainConfig {

    // ...

}

У вас не было проблемы перед рефакторингом, так как извлеченные компоненты находились в пути сканирования (и, следовательно, имели право на автоматическое подключение). Когда вы переместили их в другой модуль, это уже не так, и вам необходимо соответствующим образом скорректировать путь сканирования.

...