| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- mTLS
- 이중정렬
- Checked Exception
- NoUniqueBeanDefinitionException
- Request Body 여러 번 사용
- Java Graphql
- Sub Bytes
- Srping MVC
- Tomcat DBCP
- requestheaderdto
- graphql
- java
- Java Singleton
- Reading HttpServletRequest Multiple Times
- 상호 인증
- Java Rest
- Socket is closed
- Graphql Client
- WildFly
- 데이터 압축
- try - with - resources
- mapstruct
- 개방 폐쇄 원칙
- Unchecked Exception
- HandlerMethodArgumentResolver
- tomcat jndi
- Jndi DataSource
- 바이트 절삭
- AfterMapping
- Open Close Principal
- Today
- Total
목록분류 전체보기 (32)
Developer Sang Guy
이미지 출처 : https://madplay.github.io/post/java-checked-unchecked-exceptions 위에 파란색으로 색칠 된 블록에 있는 Exception들은 아시는분들은 알겠지만 코딩을 할때 thy - catch 블록 또는 throws 예외를 적용하지 않으면 항상 컴파일 오류(빨간 줄)을 발생시키는 CheckExcpetion 클래스이다. 하지만 초록색으로 색칠 된 블록에 있는 Exception들은 try - catch 블록 또는 throws 예외를 적용하지 않아도 컴파일 오류를 발생시키지 않는 Unchecked Exception 클래스이다. 자바의 Unchecked Exception 클래스는 RuntimeException과 Error 이다. Error 클래스는 보통 JV..
produces : 매개 변수를 따로 설정하지 않는 경우 요청 헤더 중 Accept 값과 일치해야 합니다. 일치하지 않는 경우 [org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation] https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html#produces-- 레퍼런스에는 내용 없긴한데 테스트 해보니까 produces 값 따라 Response Content-Type 정해집니다. produces = "text/pla..
-- application.properties -- Oracle spring.datasource.driver-class-name=oracle.jdbc.OracleDriver spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:xe (Oracle 설치 서버 IP + 포트 + DB 이름) spring.datasource.username=ID spring.datasource.password=PW -- MySql spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver (MySql) spring.datasource.url=mysql://localhost:3306/test_db (MySql 설치 서버 IP + 포트 ..
최근에 상점 주문을 받는 API를 개발하다가 상점의 상품의 정보를 저장해야 하는 일이 생겼다. 기존에 사용하는 DB에 저장하려하는데 상품이 여러개가 올라올수 있다보니 크기가 꽤 큰 필드가 필요했다. 하지만 크기가 넉넉한 필드가 없어 고민하던 중 바이트 배열 압축을 통해 어느정도 문제를 해결 할 수 있을 것 같아 이 방법을 사용했다. 데이터 압축과 압축해제를 위해 DeflaterOutputStream와 InflaterOutputStream를 사용했다. public class DeflaterOutputStream extends FilterOutputStream 이 클래스는 "deflate"압축 형식으로 데이터를 압축하기위한 출력 스트림 필터를 구현합니다. 또한 GZIPOutputStream과 같은 다른 유형..
NonStaticInnerClass - 상위 클래스를 참조해야 생성 및 사용 가능 (숨은 참조가 생성 됨) - 외부 클래스의 자원을 사용 할 수 있음 (참조했으니까 사용 가능) - 외부 클래스를 필수적으로 참조하므로 매번 시간과 공간이 소비되며 가비지 걸렉션이 외부 클래스의 인스턴스를 수거하지 못하는 메모리 누수가 생길 수 있다. 위와 같은 사유로 외부 클래스의 자원을 사용 할 일이 없다면 무조건 static을 붙여 멤버 클래스를 만들도록 권유한다. StaticInnerClass - 상위 클래스 참조 필요없이 생성 및 사용 가능 (숨은 참조 그딴거 없음) - 외부 클래스의 자원을 사용 할 수 없음 (Static이라서 사용 못함) 내부 클래스를 가진 TestClass 1 2 3 4 5 6 7 8 9 10 ..
Aop 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 @Component @Aspect public class MyAspect { private final Logger logger = LoggerFactory.getLogger("tLogger"); @Before("execution(* com.example.demo.service.MyService.*(..))") public void before(JoinPoint jp) throws Exception { MethodSignature..
이번에 일하다가 Graphql을 사용해야 할 일이 생겼었다. Graphql이라는걸 이번에 처음들었는데 FaceBook에서 개발한 어플리케이션 쿼리 언어란다. 애플리케이션 쿼리 언어가 뭔진 난 잘 모르겠고 그냥 API 사용을 위한 문법으로 이해했다. Graphql의 소개 중 가장 이해가 쉬웠던 내용은 Rest API의 단점을 보완한다는 내용이였다. Rest API 써본 사람은 알겠지만 서버 측으로 응답받은 데이터 중 내가 실제로 사용하는 데이터보다 사용하지 않는 데이터까지 응답받는 경우가 있다. Graphql의 경우 위 부분을 보완한 장점을 가지고있다. 문장 중 내가 필요로하는 데이터를 명시해주면 명시한 데이터만 응답받을 수 있다. 이 부분으로 확실히 괜히 필요하지 않은 데이터로 인한 리소스 낭비는 없을 ..
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URI..
1. WebMvcConfigurer 1부 Formatter Formatter 란 어떤 객체를 문자열로 변환하거나 문자열을 객체로 변환 할 때 사용하는 인터페이스라고 합니다. 강의 내 예제에서는 Client 측으로 부터 요청 된 문자열을 객체로 변환하는 것을 볼수 있었습니다. Formatter을 사용하기 위해선 Formatter 인터페이스를 상속받아야 하며 그 안에 있는 추상 메서드 Parser와 Printer를 구현해야 합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public class PersonFormatter implements Formatter { @Override // 객체를 문자열로 어떻게 보여 줄 것인지 public String print(Pers..
스프링 빈 컨테이너에 등록 된 Bean을 자동으로 주입해주는 @Autowired에 대해 알아보자 @Autowired란 스프링 빈 컨테이너에 존재하는 빈을 타입에 맞게 자동으로 주입해주는 것을 의미한다. 스프링이 Bean 등록을 하기 위해 각 객체들을 스캔하는 과정에서 자동으로 실행 된다. 주의 : Bean 등록을 하지 않는 객체에서는 @Autowired를 사용 할 수 없다. @Autowired를 사용하는 방식은 주로 아래와 같다. 1. 생성자 주입 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 @Service public class Trade { private Coin coin; @Autowired public Trade(Coin coin) { this...