Я пытаюсь @Autowire
@Configuration
класс внутри @Service
класса. в основном мой класс @Configuration
содержит сопоставление с моим пользовательским файлом .properties
. Когда я пытаюсь автоматически связать мой класс конфигурации с классом обслуживания, возникает BeanCreationException
. Я не уверен, что случилось. Просто следовал руководству по созданию классов недвижимости с весны. Должно быть что-то, что я пропустил.
Кроме того, когда я пытаюсь автоматически связать @Configuration
класс с другим @Configuration
классом, он работает гладко
В настоящее время я знаю, что prop
всегда пусто, потому что когда я удаляю вызов prop.getUploadFileLocation()
, все будет хорошо. Должно быть что-то не так во время автоматической проводки.
Вот мой класс обслуживания
@Service
public class ImageService {
public static Logger logger = Logger.getLogger(ImageService.class.getName());
@Autowired
MyProperties prop;
private final String FILE_UPLOAD_LOCATION = prop.getUploadFileLocation() +"uploads/images/";
public void upload(String base64ImageFIle) throws IOException {
logger.info(FILE_UPLOAD_LOCATION);
}
}
Вот мой класс конфигурации
@Data
@Configuration
@ConfigurationProperties (prefix = "my")
public class MyProperties {
private String resourceLocation;
private String resourceUrl;
public String getUploadFileLocation() {
return getResourceLocation().replace("file:///", "");
}
public String getBaseResourceUrl() {
return getResourceUrl().replace("**", "");
}
}
А вот где я могу успешно использовать MyProperties
@Configuration
public class StaticResourceConfiguration implements WebMvcConfigurer {
@Autowired
MyProperties prop;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(prop.getResourceUrl())
.addResourceLocations(prop.getResourceLocation());
}
}