@MappedSuperclass
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class BaseImageEntity extends BaseEntity{
@Column(name = "image_file_name", nullable = false)
protected String imageFileName;
@Column(name = "sequence")
protected int sequence;
@Transient
@Value("${cloud.aws.s3.bucket_path}")
private String bucketPath;
protected BaseImageEntity(String imageFileName, int sequence) {
Assert.notNull(imageFileName, "imageFileName must not be null.");
Assert.isTrue(sequence > 0, "sequence must not positive.");
this.imageFileName = extractImageFileName(imageFileName);
this.sequence = sequence;
}
// TODO : Annotation + Filter로 분리예정
protected String extractImageFileName(String imageUrl) {
return imageUrl.replace(bucketPath, "");
}
// TODO : Annotation + Filter로 분리예정
public String getFullImageUrl() {
return bucketPath.concat(this.imageFileName);
}
}
extractImageFileName(String imageUrl) 와 getFullImageUrl() 를 처리하는 관심사를 분리하자
getFullImageUrl() 는 Response가 반환될 떄 처리하도록 바꿔보자
extractImageFileName(String imageUrl) 는 AOP를 통해 처리해보자