일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 프로그래밍
- 운영체제
- 신입
- 세마포어
- 컴퓨터공학
- spring
- 이펙티브 자바
- package-private
- 뮤텍스
- IT
- 디지털
- 우리카드
- 스프링
- 공채
- 개발
- 깃허브
- 자바
- java
- 컴퓨터과학
- 신입사원
- Effective Java
- Public
- CS
- 메모리
- 알고리즘
- 깃
- 스터디
- 정보처리기사
- github
- OS
- Today
- Total
목록spring (5)
주니어 개발자 성장기
개요 평소 API 문서 자동화 프레임워크로 `Swagger`를 많이 써왔는데 `multipart/form-data`를 Body로 받는 API의 경우 `Swagger` 문서에서 try out(실행)할 시에 예외(HttpMediaTypeNotSupportedException)가 발생하는 문제가 있었다. 내가 본격적으로 개발을 시작한 2022년부터 꽤 거슬렸다. 그렇지만 문제가 치명적인 것도 아니고 `Swagger`상에서만 실행이 안되는 것이라 적극적으로 해결할 생각은 안하다가, 이번년도 초에 집중해서 구글링하면서 해법을 찾아서 해결할 수 있었다. 미리 문제상황을 말하자면 파일과 JSON 값을 동시에 입력받으려고 할 때 발생하는 문제다. Spring Fox와 Spring Doc 먼저 `Swagger`는 Ope..
3장 Object는 객체를 만들 수 있는 구체 클래스지만 기본적으로는 상속해서 사용하도록 설계되었다. Object에서 final이 아닌 메서드(equals, hashCode, toString, clone, finalize)는 모두 재정의(overriding)를 염두에 두고 설계된 것이라 재정의 시 지켜야 하는 일반 규약이 명확히 정의되어 있다. 일반 규약에 맞게 해당 메소드를 overriding 해야 일반 규약을 활용하는 클래스들(HashMap, HashSet)이 오동작하지 않게 된다. finalize는 이전 장에서 다루었으므로 더이상 언급하지 않는다. 개요equals 메서드는 overriding하기 쉬워 보이지만 곳곳에 함정이 있으므로 필요하지 않은 경우 overriding하지 않는 것이 최선이다. 그..
개요 자원 회수를 위해서 사용할 수 있는 finalizer와cleaner는 즉시 수행된다는 보장이 없으며 상황에 따라 위험할 수도 있어 불필요하다. Finalizer 다음과 같이 클래스에 Object.finalize 메서드를 오버라이딩 해주면 된다. @Override protected void finalize() throws Throwable { System.out.print(""); } 자바 9부터 Deprecated 되었다. 대안으로 AutoCloseable, Cleaner, WeakReference, PhantomReference 등을 제시하고 있다. (AutoCloseable가 제일 낫다고 한다) 또한 상속을 악용한 Finalizer 공격이 일어날 수도 있다. Cleaner 다음과 같이 stati..
RestTemplate이란? 스프링 3.0에서부터 지원하는 RestTemplate은 HTTP 통신에 유용하게 쓸 수 있는 템플릿이다. REST 서비스를 호출하도록 설계되어 HTTP 프로토콜의 메서드(GET,POST,DELETE,PUT)에 맞게 여러 메서드를 제공한다. RestTemplate 특징 통신을 단순화하고 RESTful 원칙을 지킨다 멀티쓰레드 방식을 사용 Blocking 방식을 사용 의존성 설정 기본 스프링 부트 의존성을 추가한다면, 자동으로 추가된다. WebClient란? WebClient는 스프링 5.0에서 추가된 인터페이스다. 스프링 5.0 이전에는 비동기 클라이언트로 AsyncRestTemplate을 사용했었다. 하지만 스프링 5.0 이후부터는 WebClient를 사용할 것을 권장한다. ..
스프링 컨테이너 안에 스프링 빈으로 등록하는 방법 1. 컴포넌트 스캔과 자동 의존관계 설정 각 클래스 바로 위에 @Controller @Service @Repository 등의 어노테이션을 추가하면 해당 클래스는 Component가 된다. (이것은 각각의 어노테이션을 찾아가 보면 안에 @Component 어노테이션이 존재하기 때문이다.) Spring이 실행될 때 컴포넌트 스캔을 하는데 이 때, @Component이 들어가 있는 클래스들은 Spring 컨테이너 안에 객체가 하나씩 자동으로 생성이 된다. 스프링이 실행될 때 컴포넌트 스캔시 해당 어노테이션이 있으면 직접 스프링 빈을 등록한다. @Bean 어노테이션을 통해서 스프링 빈을 수동으로 등록한다. *컨트롤러는 스프링이 관리하기 때문에 수동으로 하면 안..