해당 예제는 01. RESTful 개념과 사전 지식 에서 정리하였던 일부 내용들을 복습하는 용도로 작성된 글입니다. Spring RESTful API 개발환경 구성하기 프로젝트 생성 https://start.spring.io/ 기호에 맞게 Maven, Gradle, Java 버전 등을 선택하시면 됩니다. 사용되는 의존성은 Spring Web Lombok H2 Database Validation Spring Data JDBC입니다. 해당 프로젝트는 단일 Entity를 가지는 단순한 RESTful API 예제입니다. HATEOAS를 만족시키진 않았습니다. 해당 내용과 관련해서 인프런에 백기선 님의 RESTful 강의를 수강해보시길 추천드립니다. Entity, DTO 만들기 @Builder @Getter pu..
enum 정의하는 방법 해당 타입은 JDK 5에 추가되었으며, 상수들을 정의, 열거하는 데 사용되는 키워드이다. 기존에 사용되던 final static keyword를 사용한 변수 선언 등을 대체하였다. 해당 키워드의 특징으로는 모든 Java의 enum들은 암시적으로 java.lang.Enum Class를 확장한다. 정의된 상수 하나당 하나의 인스턴스가 생성된다. public static final type instance 데이터를 비교할 때 실제 값과 함께 타입을 체크한다. 메서드와 필드를 추가하고 인터페이스를 구현할 수 있다. 다른 Primitive Type Variable 과 같이 Switch Statement에서 사용할 수 있다. 정의 시 Class Level에서 사용된다. 정도가 있다. enum..
RESTful Tutorial!이 글은 RESTful에 대하여서 완벽하게 정리하는 것이 아닌 기본적인 내용을 학습하도록 작성한 글입니다. 세세한 내용에 대해서는 각 목차를 Keyword로 검색하시길 바랍니다. 해당 예제들은 다음 글에서 업로드할 예정입니다. Notion에서 작성하고 옮겨오다 보니 몇몇 양식이 깨져있을 수 있습니다. 그렇기에 Notion Link도 남겨드립니다. www.notion.so/Week_02-01-REST-8d07b91683d548c2aa4e20f2f404eeef RESTful을 위한 사전 지식HTTP (Hypertext Transfer Protocol)Web client와 Server 간의 데이터 전송을 위해 사용되는 Application Layer Protocol입니다...
G1 GC 구조 개념 구조 (모든 영역을 블록으로 표기하지 않음) G1 GC는 여러 Background Thread를 이용하여 Heap 크기에 따라 1MB~32MB로 분할된 Region들을 지정된 Pointer를 통해 Scan 하고 제일 많은 수집 대상이 존재하는 Region에 대해 이름을 지정한다. 이름이 지정된 영역은 GC의 대상이 된다. Young Generation Region (Non-Contiguous Region) Heap 메모리 공간에서 비연속적으로 존재하는 Young Object의 주거지를 의미한다. 해당 영역의 크기는 Heap 전체 크기의 5~60% 까지를 차지할 수 있다. G1 GC 특징 G1 GC는 Scan을 하는 도중에 해당 Region에 대한 Compacting도 수행한다. Re..
데이터베이스의 index? Index는 책의 목차, 색인과 같은 역할을 담당하는 데이터베이스 객체로써 테이블과 독립적으로 존재합니다. 하지만 테이블에 의존적이기에 해당 테이블이 삭제될 경우 같이 제거되게 됩니다. 존재하는 칼럼의 값과 해당 레코드가 저장된 주소를 키와 값의 구조로 묶어 저장하고, 정렬된 상태를 유지하기에 저장, 수정, 삭제 기능들의 성능을 희생하고 빠른 조회를 제공하는 것이 Index의 사용 목적입니다. 기본 제공되는 Index? 기본적으로 제공되는 Index는 PK index 입니다. InnoDB는 설계상 이유 때문에 모든 테이블에 PK가 필요한데요. 개발자가 테이블에 PK를 작성하지 않는다면, 암시적으로 PK를 생성하여 레코드를 탐색하고 인덱스를 생성하는데 사용되게 됩니다. Prima..
잘못된 내용에 대해서는 댓글 부탁드립니다. Concurrency 하나의 코어가 여러 프로세스를 번갈아가며 실행하는 것을 의미한다. 이는 사용자에게 동시에 실행되는 것처럼 보이게 만드는 효과를 가지며, 단위 시간 내에 더 많은 일을 처리한다. 프로세스 간의 컨텍스트 스위칭이 발생한다. Concurrency의 장단점 장점 CPU의 처리량이 증가한다. 자원의 활용도가 증가한다. 프로세스 간의 대기시간이 감소된다. 단점 Context Switching에 대한 Overhead가 발생한다. Parallelism 하나의 프로세스를 분할하여 처리 여러 개의 코어가 하나의 프로세스의 작업을 분할하여 처리하는 것을 의미할 수 있다. 이는 내부적으로 동작하는 스레드의 개수만큼 CPU에 할당할 수 있음을 의미한다. 화면을 랜..
서비스 메서드에 Transcational을 사용하였을 때와 사용하지 않았을 때, 흐름을 정리해보았습니다. 스프링 @Transaction 미적용 (JDBC API - Local Transaction) 기본적으로 JDBC의 트랜잭션은 하나의 Connection Instance를 생성하고 통신하며 종료하는 흐름과 같이 동작하게 된다. 즉 코드에 존재하는 DAO 로직들은 각각의 트랜잭션 안에서 연산을 진행하게 되는 것이다. 이때의 트랜잭션을 로컬 트랜잭션이라고 한다. 해당 메서드 내에서는 3개의 트랜잭션이 동작하며, 이는 내부에서 하나의 DAO 로직이 실패하더라도 다른 로직들은 성공하고 반영될 수 있는 상태임을 의미한다. 각각의 로직들은 Connection Pool에서 리소스 전달받아 새로운 Connection..
내용 추가 : resultType을 entity, dto 등의 Value Object으로 지정할 경우 resultMap을 생성한다. 마이바티스와 롬복을 같이 사용하는 것은 처음이다보니 사소한 실수를 통해 여러 예외를 만나게 되는 것 같다. User 도메인을 개발하기 시작했기에 엔티티를 작성하고 테스트 데이터베이스 스키마와 데이터를 추가한 뒤 MapperTest를 통해 조회 테스트를 진행하던 중 문제가 발생하였다. Caused by: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index 9 out of bounds for leng..
Auto-Configuration Conditions 주어지는 여러가지 조건들을 이용하여 Spring Application 실행시 사용할 Bean Definition을 선택할 수 있도록하는 Annotation들의 집합이다. @ConditionalOnClass 어노테이션의 인자로 받은 클래스가 존재할 때, 해당 주석이 적용된 Configuration class의 Java기반 Bean Definition들을 등록한다. @ConditionalOnMissingClass 어노테이션의 인자로 받은 클래스가 존재하지 않을 때, 해당 주석이 적용된 Configuration class의 Java기반 Bean Definition들을 등록한다. @ConditionalOnBean 어노테이션의 인자로 받은 Bean ID가 존재..
주의 : 틀린 내용이 있을 수 있습니다..! 내용을 보완 중에 있습니다. SpringBootConfiguration? 개발자의 편의를 위해 EnableConfiguration과 SpringBootConfiguration, 그리고 Component Scan을 합쳐 하나로 제공한다. // 기존에 작성하던 방식을 좀더 간편하게 하였다. @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurat..
- Total
- Today
- Yesterday
- Thundering Herd
- RPC
- URN
- rabbitmq
- transaction
- HTTP
- JPA
- JDK Dynamic Proxy
- Request Collapsing
- java
- cache stampede
- AMQP
- 커뮤니티 오거나이저
- spring
- WiredTiger
- RESTful
- lambda
- Optimistic Locking
- spring AOP
- 게으른개발자컨퍼런스
- mybatis
- Switch
- JVM
- Url
- cglib
- 한국 스프링 사용자 모임
- configuration
- 근황
- URI
- Redis Key
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |