Итак, у меня есть внешний класс конфигурации, который внедряет переменные со свойствами из моего файла global.properties.
У меня нет проблем с созданием экземпляра и доступом к объекту в моем основном классе загрузки Spring, но любой другой класс в моем проекте делает внешний конфигурационный объект пустым.
Так выглядит мой внешний конфигурационный класс
@Component
@PropertySource("classpath:global.properties")
public class ExternalConfig {
@Value("${developerName}")
private String developerName;
//getters and setters
public String getDeveloperName() {
return developerName;
}
public void setDeveloperName(String developerName) {
this.developerName = developerName;
}
}
Это мой основной класс загрузки Spring
@SpringBootApplication
public class SpringBootMain implements CommandLineRunner {
@Autowired
private ExternalConfig externalConfig;
@Bean
ResourceConfig resourceConfig() {
return new ResourceConfig().registerClasses(Version1Api.class, Paypal.class);
}
public static void main(String[] args) {
SpringApplication.run(SpringBootMain.class);
}
@Override
public void run(String... args) throws Exception {
// TODO Auto-generated method stub
System.out.println("RUN METHOD");
System.out.println(externalConfig.getDeveloperName());
}
}
Однако, если я попытаюсь добавить этот внешний конфигурационный класс в другой класс, такой как мой класс HTTP
@Component
public class Http {
Http() {
}
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Version1Api.class);
@Autowired
private static ExternalConfig externalConfig;
public static void main(String[] args) throws IOException, URISyntaxException {
logger.info("HTTP Class");
logger.info(externalConfig.getDeveloperName());
}
Объект всегда нулевой и выдает мне ошибку. Что я делаю неправильно? Должен ли я реализовать свой объект по-другому?
Или я должен реализовывать свой класс HTTP по-другому?
Любая помощь будет принята с благодарностью!