문제


@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를 통해 처리해보자