Я пытаюсь создать общую библиотеку, которая включает несколько вещей, необходимых моим микросервисам. Одной из таких вещей является функциональность ACL, обеспечиваемая Spring-Security. Моей первоначальной мыслью было инициализировать все связанные с ACL bean-компоненты из файла @Configuration в общей библиотеке, и каждый раз, когда микросервису нужна эта функциональность, я мог использовать аннотацию @Import (для моего проекта микросервиса), чтобы «включить» ее.
Для работы некоторых из этих компонентов требуется известный javax. sql .DataSource, поэтому в моей common библиотеке я автоматически подключил его следующим образом:
@Configuration
public class AclConfiguration {
@Autowired
DataSource dataSource
Когда я решу, что я хочу, чтобы эта конфигурация имела место в моем go моем микросервисном проекте (скажем, RulesApplication) и в основном классе (аннотированном @SpringBootApplication), я делаю следующее
@SpringBootApplication
@EnableJpaRepositories
@EnableJpaAuditing
@EnableCaching
@Import(AclConfiguration.class)
public class RulesApplication {
.
.
.
Проблема в том, что DataSource bean-компонент не виден из общей библиотеки, хотя он создается должным образом (проверяется только путем удаления @Import).
Каждый раз, когда я импортирую конфигурацию из общей библиотеки, я получаю:
Caused by: java.lang.IllegalArgumentException: DataSource required
at org.springframework.util.Assert.notNull(Assert.java:198) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE]
Указывает, что компонент DataSource имеет значение null.
Чего мне здесь не хватает?