Есть ли способ инициализировать объект, введенный с помощью @Autowired, если он покидает текущую страницу?
Например, если текущий пользователь загружает фотографию во время записи, информация о фотографии сохраняется в хэш-карте в внедренный объект.
В это время, если пользователь загружает изображение и отменяет запись (переход на другую страницу), внедренный объект должен быть инициализирован. В настоящее время, если запись отменяется и текст регистрируется снова, ранее сохраненное изображение остается в объекте.
Вот мой код
Когда пользователь регистрирует изображение, uploadImage получает файл в качестве параметра.
Контроллер. java
@PostMapping("/image")
public void uploadImage(@RequestPart MultipartFile upload) {
s3Service.tempUpload(upload);
}
Передайте файл в tempUpload объекта s3Service и загрузите его в / temp s3 После завершения записи сохраните файл в переменной Map в TempImage, чтобы переместить фотографию в фактическую папку.
Service. java
private TempImage tempImage;
@Autowired
public S3Service(TempImage tempImage) {
this.tempImage = tempImage;
}
public String tempUpload(MultipartFile file) {
s3Client.putObject(
new PutObjectRequest(bucket + "/temp", fileName)
);
tempImage.setTempFile(fileName, bytes);
}
TempImage. java
@Component
public class TempImage {
private final HashMap<String, byte[]> tempFile = new HashMap<>();
public HashMap<String, byte[]> getTempFile() {
return tempFile;
}
public void setTempFile(String fileName, byte[] bytes) {
this.tempFile.put(fileName, bytes);
}
public void clearTempFile() {
this.tempFile.clear();
}
}
В это время, если пользователь возвращается или покидает страницу, объект TempImage должен быть инициализирован.
В настоящее время он продолжает накапливаться.