@EnableFeignClients проверка пакета — весенняя загрузка

#regex #spring-boot #package #netflix-feign

#регулярное выражение #весенняя загрузка #пакет #netflix-симулировать

Вопрос:

Я аннотировал приложение spring boot с помощью клиента Feign

 @SpringBootApplication
@EnableFeignClients({"com.ms.Foo1.api", "com.ms.Foo2.api",
"com.ms.Foo3.api", "com.ms.Foo4.api", "com.ms.Foo5.api", "com.ms.Foo6.api",
"com.ms.Foo7.api", "com.ms.Foo8.api", "com.ms.Foo9.api", "com.ms.Foo10.api"})
public class AnalyticsApplication extends SpringBootServletInitializer {
}
  

все работает нормально, так как я просто модифицирую базовые пакеты. он запускает сканирование пакета вне api.

 @SpringBootApplication
@EnableFeignClients({"com.ms.*.api"})
public class AnalyticsApplication extends SpringBootServletInitializer {
}
  

Я ожидаю, что @EnableFeignClients({"com.ms.*.api"}) это будет сканировать только клиентов внутри api, но также начнет сканирование за пределами пакета api.

что мне нужно изменить? или мы можем применить регулярное выражение здесь вместо упоминания каждого пакета?

Комментарии:

1. все работает нормально, так как я просто модифицирую базовые пакеты. он запускает сканирование пакета вне api. — не могли бы вы пояснить, что вы имеете в виду, когда я просто изменяю базовые пакеты ?

2. @star67 Вместо того, чтобы указывать весь пакет в @EnableFeignClients , я просто поставил {"com.ms.*.api"} его равным basePackages ={"com.ms.*.api"}

3. Как следует из названия, это то basePackage , т. е. откуда начинается сканирование. Для этого не требуется регулярное выражение (в стиле ant), это отправная точка для сканирования.

Ответ №1:

Вы можете использовать фильтр регулярных выражений в @ComponentScan следующим образом:

 @ComponentScan(basePackages = "com.ms",
     includeFilters = @Filter(type = FilterType.REGEX, pattern="com.ms.*.api"))
public class AnalyticsApplication extends SpringBootServletInitializer {
}
  

Но в @EnableFeignClients этой функции нет. Единственное, что вы можете сделать, это:

 @EnableFeignClients(basePackages = "com.ms")
public class AnalyticsApplication extends SpringBootServletInitializer {
}