Я думаю, что вместо использования @PropertySources лучшим подходом и более подходящим будет использование @ComponentScan в вашем модуле, который содержит «основной метод».Так как вам нужен экземпляр класса JWTConfiguration, а не фактический файл .property , более рекомендуется выставить объект EJB и заставить его выполнить Springboot-сканирование из другого модуля, а не файл файла свойств (потому что этоделает файл jwtConfiguration.java в другом модуле довольно бесполезным.) Таким образом, вы можете попробовать что-то вроде этого
Скажем, у нас есть два модуля - Module1 и Module2 внутри основного модуля (который имеет только pom).Я предполагаю, что вы знаете, что модуль без кода просто упаковывает приложение как «pom» и описывает зависимые модули внутри
Ваш основной pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>XXX</groupId>
<artifactId>XXXX</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<name>ws-cms-engine</name>
<url>http://maven.apache.org</url>
<properties>
<spring-boot.version>2.0.0.RELEASE</spring-boot.version>
<spring-kafka.version>2.2.3.RELEASE</spring-kafka.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
............
............
<modules>
<module>Module1</module>
<module>Module2</module>
</modules>
Теперь давайте рассмотрим, что ваша JWTConfiguration находится в Module1 и использует файл свойств в объявленной папке ресурсов - application.properties
Пример файла JWTConfiguation.java
package common.module2.config
@Configuration
@PropertySources("classpath:application.properties")
public class JWTConfiguration{
@Value("${config1}")
private String someConfig;
}
Теперь, если у вашего Module2 есть главный класс, который должен использовать эту конфигурацию, то, вероятно, что-то вроде этого имело бы смысл
Нам нужно сделать так, чтобы контейнер SpringBoot читал из bean-компонента, объявленного в module1, а не читал фактическийфайл свойств
@ComponentScan(basepackages={"common.module2.config", "common.module1.this.config"})
@SpringBootApplication
public class Application(){
public static void main(String args[]){
SpringApplication.run(Application.class);
}
}
Итак, здесь мы сообщаем, что bean-компоненты, объявленные в пакете module2, должны проверяться контейнером пружины при его запуске и инициализации
Теперь вы можете автоматически связывать bean-компонент в нужной службеи используйте его
@Service
public class SampleService{
@Autowired
JWTConfiguration config;
}
Это должно автоматически связать управляемый экземпляр JWTConfiguration для использования