Наличие этого класса StorageFactory.java, который должен вызываться из Singleton:
@Component
@Configuration
@PropertySource("classpath:application.properties")
public class StorageFactory {
@Value("${storage.type}")
private static String storageTypeString;
@Autowired
private IApplicationProperties applicationProperties;
@Autowired
private Environment env;
private static StorageType storageType;
public static IEntityStorage create() {
IEntityStorage storage = null;
storageType = applicationProperties.getStorageType();
switch (storageType){
case File:
storage = new FileStorageImpl();
break;
default:
throw new IllegalArgumentException("storage.type in application.properties is invalid.");
}
return storage;
}
public static StorageType getStorageType() {
return storageType;
}
}
Звонок из Синглтона:
public final class DataManager {
private static StorageType storageType;
private static IEntityStorage storage;
private static DataManager instance = null;
protected DataManager() {
storage = StorageFactory.create(); <<<< Calling from here to create the factory
storage.init();
loadAll();
storageType = StorageFactory.getStorageType();
}
public static DataManager getInstance() {
if (instance == null){
synchronized (DataManager.class){
if (instance == null){
instance = new DataManager();
}
}
}
return instance;
}
}
Я пытаюсь использовать Autowired ApplicationProperites.java (внутри StorageFactory .java) для получения моего свойства (storageType).
Я попытался решить проблему с автопроводкой несколькими подходами, но она не сработала.
Что я могу сделать, чтобы получить значение из файла свойств на этом этапе?