일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리소스모니터링
- 스프링부트
- date
- math
- Java
- 힙덤프
- html
- string
- priority_queue
- JPA
- alter
- NIO
- Properties
- Union-find
- scanner
- CSS
- deque
- map
- set
- union_find
- javascript
- 스택
- spring boot
- List
- sql
- 큐
- Calendar
- dfs
- BFS
- GC로그수집
- Today
- Total
목록Spring Framework (20)
매일 조금씩
[전체 목차]IoC 컨테이너와 빈스프링 IoC 컨테이너와 빈ApplicationContext와 다양한 빈 설정 방법 스프링 IoC 컨테이너의 역할ApplicationContext빈 설정컴포넌트 스캔빈 설정 방법의 변천사Resource / Validation데이터 바인딩SpEL스프링 AOPNull-Safety spring-boot-stater-web 의존성만 넣어 두면 우리가 애플리케이션을 만드는데 필요한 의존성들이 대부분 들어온다.spring core, spring context, spring beans 이렇게 세개가 주요한 의존성들... 1. 스프링 IoC 컨테이너의 역할빈 인스턴스 생성의존 관계 설정빈 제공 2. ApplicationContext: BeanFactory의 확장판. 빈 관리..
[전체 목차]IoC 컨테이너와 빈스프링 IoC 컨테이너와 빈스프링 IoC 컨테이너빈IoC 컨테이너를 사용하는 이유는?핵심 인터페이스 (BeanFactory)@Repository, @Service와 같은 어노테이션으로 왜 빈으로 등록하는가? 왜 IoC 컨테이너가 관리하게 했는가?Repository 객체를 만드는 비용이 비싼 이유는?의존성 주입을 받지 않는 경우, 단위테스트가 힘든 이유는?ApplicationContextIoC 컨테이너에 중요한 인터페이스Resource / Validation데이터 바인딩SpEL스프링 AOPNull-Safety Inversion of Control: 의존 관계 주입 (Dependency Injection)이라고도 하며,어떤 객체가 사용하는 의존 객체를 직접 만들어 사용..
이 기능을 구현하면서 Spring framework을 써야할 백가지 이유 중 하나가 추가되었다. 내가 구현하고자 하는 기능은.. request로 header에 range가 들어오면 동영상을 해당 range만큼 range request로 보내고 (206 : partial content) range가 들어오지 않으면 동영상을 한번에 보내는 것이다. (200 : ok) header의 range를 가져와서 직접 분기처리를 해줘야하는줄 알았지만 FileSystemResource라는 아주 좋은 클래스가 있었다. range값의 유무를 통해 알아서 200 or 206으로 처리해주기 때문에 range request 구현조차 필요없었다. 컨트롤러를 보면 다음과 같다. @GetMapping(value = "/{media_i..

@Builder와 @NoArgsConstructor를 함께 사용하면 아래와 같은 에러 메세지를 볼 수 있다. 당연한 결과다 ㅎ "actual and formal argument lists differ in length" 이땐 @AllArgsConstructor를 사용하면 해결이 된다. @Builder @AllArgsConstructor @NoArgsConstructor

캐시에 대한 설명과 사용법을 익힌 후, 실제 프로젝트에 적용한 코드를 마지막에 추가했다. [목차] 1. 개요 2. 스프링 캐시 설정, 캐시 매니저 3. 어노테이션 기반 캐시 사용하기 4. 프로젝트에 적용하기 개요 캐시란? 캐시(Cache)는 컴퓨터 과학에서 데이터나 값을 미리 저장해 놓는 임시 장소를 의미한다. 캐시 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래걸리거나, 값을 다시 계산하는 시간을 절약할 때 주로 사용되며, 동일 결과를 리턴하는 반복적인 작업이 많고, 각 작업의 시간이 오래걸리거나 서버에 부담을 주는 경우 사용하면 효율적이다. 만약 매번 다른 결과를 돌려줘야하는 작업이거나 수정이 빈번한 데이터의 경우 캐시를 적용해봐야 오히려 성능이 떨어질 것이다. 로컬 캐시? 글로벌 캐시? Loc..
동영상 업로드, 조회 기능을 구현하다보니 업로드한 동영상을 조회하면 그 동영상을 모두 다운로드한 후에 플레이 할 수 있어서.. 길이가 긴 동영상의 경우 다 다운로드 될 때 까지 기다려야했다. 이 문제를 해결하기 위한 방법이 각종 동영상 사이트에서 이용되는 스트리밍 서비스이다. 동영상을 조회하면 내가 지정한 range 만큼 request를 계속 날려서 range 만큼 동영상을 다운로드해 오고, 그동안 로드 된부분은 플레이 할수 있다. 이 기능은 HTTP range requests를 활용하면 쉽게 만들수 있다. HTTP Range Requests HTTP 범위 요청이란 HTTP를 통해 일정한 부분을 서버에서 클라이언트로 보내는 것을 허락하는 것이다. 범위를 알 수 있는 대형 미디어 파일을 나누어서 읽을 수 ..