Programming/Java
-
[Java] Immutable ObjectProgramming/Java 2024. 4. 1. 22:09
Immutable Object : An object whose state cannot be modified after it is created - Once an immutable object is instantiated, its internal state(the values of its fields) cannot be altered through any means. 1. Thread Safety - In a multi-threaded envrionment, multiple threads can access an immutable object simultaneously without worrying about synchronization issues 2. Simplified Concurrency - Sin..
-
[Java] Request DTO 불변 객체로 만들기 - JSON 역직렬화Programming/Java 2023. 5. 29. 01:10
들어가기 전에 DTO 혹은 VO 객체가 한 번 생성하고 나서 값이 변경될 가능성이 없다면 Immutable 하게 생성하는 것이 좋다고 한다. Gotcha 프로젝트를 리팩토링하며 불변 객체화할 수 있는 클래스들을 불변 객체화 하는 것을 진행해보려고 한다. 제일 간단한 기능을 기준으로 테스트해보고자한다. 수정전 Controller, Service, Request DTO는 아래와 같다. Repository는 Spring Data JPA를 이용한 기본 메소드를 사용했다. [DuplicateNicknameRequest] *참고) - @NoArgsConstructor는 Jackson에서 리플렉션을 통해 json 데이터로 객체를 생성할 수 있도록 함 - @Builder 는 test code 작성시 객체를 생성하기 ..
-
[Java] 불변 객체(Immutable Object)와 final을 사용해야 하는 이유Programming/Java 2023. 5. 28. 21:20
프로젝트를 진행하며 의존성 주입을 위해 private final을 써왔었다. 그런데 이 final이라는 것에 대해 제대로 고민하고 다른 객체에 사용해본 적이 없는 것 같아 Gotcha 프로젝트를 리팩토링하며 배운 내용들을 포스팅해보고자 한다. 불변 객체(Immutable Object)란? : 객체 생성 이후 내부의 상태가 변하지 않는 객체 ➡️ 한 번 생성이 된 불변 객체는 신뢰할 수 있다. - read-only 메소드만 제공하며 객체의 내부 상태를 제공하는 메소드를 제공하지 않거나 방어적 복사를 통해 제공 - Java의 String은 대표적인 불변 클래스로 String Pool이라는 공간에 String 객체를 보관하고 있음 - 변수에 새로운 값을 할당할 경우 객체의 value가 변하는 것이 아닌 새로운..
-
[Java Collection Framework] 3. Queue, PriorityQueue, Deque, ArrayDequeProgramming/Java 2023. 3. 13. 20:30
2. Queue 인터페이스 : 데이터 처리를 하기 전 요소를 보관하도록 설계된 컬렉션 ✅ 특징 1. 삽입, 추출, 검사 메소드 추가 - 기본 Collection 작업 외에도 추가 적인 메소드 제공 - 각 메서드는 두 가지 형식으로 존재(예외가 발생하는 것과 값을 반환하는 것으로 구분) - 대기열은 일반적으로 FIFO(선입선출) 방식으로 요소를 정렬 - add, remove, element 메소드의 경우 값이 없으면 예외가 발생하나, offer, poll, peek은 false나 null 값을 반환 값이 없을 경우 예외 발생 값 반환(false or null) 삽입 add(e) offer(e) 추출 remove() poll() 검사 element() peek() 2. null 값 추가 비허용 - Queue..
-
[Java Collection Framework] 2. 컬렉션(Collection), 리스트(List), ArrayList, LinkedList, VectorProgramming/Java 2023. 3. 7. 15:41
Collection 인터페이스 collection 계층 구조의 root interface로 object의 집합을 의미 List, Queue, Set이 이를 구현 ✅ 주요 메소드 1. List 인터페이스 ✅ 주요 메소드 🔽 메소드 공부하면서 생긴 궁금증 더보기 Q. 각각 new 생성자를 통해 생성한 ArrayList 객체가 같은 값, 같은 순서의 요소를 갖고 있을 때, hashCode값이 같은 이유가 뭘까? - hashCode는 각 객체에 고유한 속성값을 주기 위해 존재하며 보통은 메모리 주소를 기반으로 함 - 하지만 'ArrayList'는 hashCode 메소드를 override하여 리스트의 컨텐츠를 기반으로 값을 반환(메모리 주소가 아닌!) - ArrayList에서는 이터레이터를 통해 리스트의 요소들을..
-
[Java Collection Framework] 1. 컬렉션 프레임워크란?Programming/Java 2023. 2. 11. 22:34
컬렉션 프레임워크란? : 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스 집합 - 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해놓은 것 - 컬렉션 프레임워크는 자바의 인터페이스를 사용해 구현 📍Collection이란? : 오브젝트의 집합. A collection is an object that represents a group of objects (such as the classic Vector class). Collection Framework 종류 List : 인덱스의 순서로 요소를 저장하며 중복된 데이터 저장 가능 Queue : 데이터가 저장된 순서대로 출력되는 선입선출 구조를 갖는 선형 자료구조 Set : 순서가 없으며 데이터 중복..
-
[Java Spring] Spring Security의 개념 및 처리 과정Programming/Java 2023. 1. 24. 17:00
들어가기에 앞서 인증(Authentication)과 인가(Authorization) - 인증(Authentication) : 해당 사용자가 본인이 맞는지 확인하는 과정 - 인가(Authorization) : 해당 사용자가 요청하는 자원을 실행할 수 있는 권한이 있는가를 확인하는 과정 ➡️ Spring Security는 인증 절차를 거친 후 인가 절차를 진행 ➡️ Principal을 아이디로 Credential을 비밀번호로 사용하는 Credential 기반 인증 방식 사용 Principal(접근 주체) : 보호 받는 Resource에 접근하는 대상 Credential(비밀번호) : Resource에 접근하는 대상의 비밀번호 Spring Security란? : Spring 기반의 어플리케이션 보안(인증과 ..
-
[Java Spring] AOP 개념 및 사용 방법(AspectJ, xml, annotation)Programming/Java 2022. 10. 30. 18:12
AOP (Aspect Oriented Programming), 관점 지향 프로그래밍 어떤 로직을 기준으로 핵심적인 관점(비즈니스 로직), 부가적인 관점을 나누어 그 관점을 기준으로 모듈화 - 요청(Request)에 대해 핵심 관심사항(Aspect)과 부가 관심사항으로 나눠 관점을 기준으로 프로그램을 구현하는 기법 - OOP: 사용자의 관점에서 필요한 핵심적인 비즈니스 로직을 구현하는데 있어 객체(클래스)를 모듈화함으로써 반복되는 코드를 줄임 - AOP: OOP의 개념에 더해, 어플리케이션 전체에 사용되는 부가기능(Aspect)들을 모듈화, 공통 기능(Corsscutting Concerns)관리를 더 효율적으로 가능하게 함 (개발, 운영 측면에서 OOP를 더욱 강력하게 만듦) - 어플리케이션에서 계속 반복..