분류 전체보기

    [JAVA] String Pool과 불변성

    [JAVA] String Pool과 불변성

    String과 불변성 Java에서 String은 immutable, 즉 불변 객체이다. 불변(immutable)하다는 것은 문자열이 일단 생성되면 그 값이 고정되어 있으며, 변경되더라도 원래의 문자열 내용이 변경되는 것이 아닌 새로운 문자열 객체가 생성됨을 의미한다. 예를 들어, String str1 = "Hello"; String str2 = str1; str1 = str1 + " World"; 위 코드에서는 "Hello"라는 문자열이 먼저 생성되고, 변수 str1과 str2가 이 문자열을 참조한다. 그리고 str1에 " World"를 추가한 새로운 문자열을 할당한다. 하지만 문자열은 변경할 수 없으므로, 실제로는 새로운 문자열이 생성되고 str1은 이 새로운 문자열을 참조하게 된다. str2는 여전히..

    [Spring] @JsonInclude와 @JsonIgnore

    지난주 프로젝트 모임 중 지현님께서 양방향 연관관계가 있는 Entity가 Json으로 변환될 때 순환 참조가 일어나는 에러가 발생하여 @JsonIgnore 어노테이션으로 문제를 해결하셨다는 얘기를 전해들었다. 당시 "저희 프로젝트에도 @JsonIgnore 사용한 코드 있어요!" 하고 찾아보니 @JsonInclude였다. response 반환 시 null 필드를 생략하기 위해 @JsonInclude를 사용했었는데, @JsonIgnore와 헷갈렸다. 헷갈리지 않도록 Jackson 어노테이션들을 살펴보고 정리해보고자 한다. Jackson Property Inclusion Annotations Jackson 라이브러리에서 사용되는 속성 포함에 관련된 어노테이션들로, JSON 직렬화 및 역직렬화 과정에서 특정 필..

    [AWS S3] 여러 객체 삭제

    [AWS S3] 여러 객체 삭제

    게시글 삭제 시 게시글에 첨부된 이미지/비디오/음성녹음 등 S3에 저장된 파일객체들을 모두 삭제해야 한다. 프로젝트의 S3 폴더 구조는 위와 같이 되어 있는데, boardKey 하위의 객체들을 한 번에 삭제하고 싶었다. 코드 public void delete(String base) throws IOException { var listObjectsV2Result = amazonS3Client.listObjectsV2(bucket, base); for (var objectSummary : listObjectsV2Result.getObjectSummaries()) { System.out.println("key = " + objectSummary.getKey()); amazonS3Client.deleteObje..

    [20230628] 오늘의 삽질

    오늘의 삽질📢 기존 코드는 아래와 같이 되어 있으며, 내 역할은 resize 메서드에서 리사이징 된 동영상의 바이트를 갖는 새 VideoCustomFile 객체를 반환하는 것이었다. @Getter public class VideoCustomFile implements CustomFile { private final byte[] bytes; private final String base; private final String fileName; public VideoCustomFile(MultipartFile multipartFile) { this.fileName = addRandomValueFilePrefix(multipartFile); this.base = "video"; try { this.bytes ..

    [JAVA] var 사용 시 주의할 점과 장단점 - 지역 변수 추론 타입

    var란? Java10에서 도입된 var는 초기화 값이 있는 지역 변수 선언 시 타입을 생략할 수 있으며, 컴파일러가 타입을 추론한다. var는 키워드가 아닌 예약된 타입 이름(reserved type name)으로, 식별자로 사용할 수 있다. 즉, 아래와 같이 작성해도 문제가 발생하지 않는다. var var = "Hello, World!"; The identifier var is not a keyword; instead it is a reserved type name. This means that code that uses var as a variable, method, or package name will not be affected; code that uses var as a class or int..