전체 글

흔한 컴공 출신 개발자입니다. 제가 경험하고 공부하고 아는 것을 적어둡니다.
0. 이 글을 쓰는 이유 java를 완전 처음 접하면 try catch와 throw에 대해 생각이 좀 많아질 수 있는데 최대한 간단하게 설명을 하고 내 생각을 정리하기 위함 1. throw? 이름 그대로 생각하면 던진다는 뜻이다. java에서는 에러를 "다른 메서드에게 던진다" 정도로 생각하면 될 것 같다. 2. try - catch (- finally) 이름 그대로 생각하자. 시도하고 잡고 마침내 뭔가를 한다. try 블록에서 시도하다가 문제가 발생한 경우 catch문에서 후속조치를 할 수 있다. 이후 옵션 사항으로 finally문을 통해 try가 다 끝나던 catch로 후속조치를 하던 아무튼 무조건 실행해야 하는 로직은 finally 블록에서 진행한다. 3. 본론 3-1. throw는 책임전가? tr..
· JAVA/spring
0. 이 글을 쓰는 이유 평온하게 개발을 하던 중 환경에 따라 동적으로 flyway의 sql파일에서 값을 변경하여 넣어줘야 할 일이 생겼다. 다른 곳들은 뭐 @Value로 잘 가져오면 괜찮던데 Flyway는 딱 하나가 달라서 리마인드 겸 정리를 해보고자 한다. 1. 사건의 발단 proxy table(db link)를 위해 외부 ip를 가져와야하는데 flyway는 모든 프로파일에 걸쳐 동작을 하고 외부 database ip는 각 상황(dev, live)등에 따라 고정값이지만 다른 값이었다. 그러면 믿을 수 있는 부분은 application의 properties파일이고 어떻게 가져와야 할까 create table tmp_table( //중략 ) engine=CONNECT table_type=MYSQL dbn..
· JAVA/spring
0. 이 글을 쓰는 이유 스프링에서는 컨트롤러를 통해 서비스가 동작하는 도중 내가 에러 핸들링을 하지 않은 경우에 대해도 was가 죽지 않고 계속 떠있는 것을 볼 것이다. 우리가 일반적으로 자바로 프로그램을 수행해 보면 별도의 예외 처리가 없는 경우 해당 애플리케이션은 바로 죽게 되는데 스프링에서는 그렇지 않다. 어떻게 이게 가능한 것일까에 대해 궁금해져서 알아보고자 했다. 1. 사전 지식 1-1. Filter 스프링에는 Filter라는게 존재한다. 이게 뭐 하는 놈이냐 하면 WAS가 servlet container에게 request를 던져주면 그걸 적절히 필터링한 후 servletrequest와 servletresponse를 servlet에게 던져준다. 이후 response가 나올 시점에 다시 Filt..
1편 : https://developer-youn.tistory.com/124 jvm 조금씩 알아가기 1편 - jvm이란 2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124)을 보고 오시는걸 추천드립니다. 0. 목표 java를 개발하다 보면 종종 class loader developer-youn.tistory.com 2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124..
1편 : https://developer-youn.tistory.com/124 jvm 조금씩 알아가기 1편 - jvm이란 2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124)을 보고 오시는걸 추천드립니다. 0. 목표 java를 개발하다 보면 종종 class loader developer-youn.tistory.com 2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124..
1편 : https://developer-youn.tistory.com/124 jvm 조금씩 알아가기 1편 - jvm이란 2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124)을 보고 오시는걸 추천드립니다. 0. 목표 java를 개발하다 보면 종종 class loader developer-youn.tistory.com 3편 : https://developer-youn.tistory.com/126 jvm 조금씩 알아가기 3편 - 데이터 영역(Runtime Data Areas) 1편과 2편을 보고 읽으시는 것을 추천드립니다 1편 https:..
2편 : https://developer-youn.tistory.com/125 jvm 조금씩 알아가기 2편 - 클래스 로더(class loader) 1편(https://developer-youn.tistory.com/124)을 보고 오시는걸 추천드립니다. 0. 목표 java를 개발하다 보면 종종 class loader라는 단어를 콘솔에 찍힌 에러 등을 통해 본 적이 있을 수도 있다.(실은 대부분 봤을 developer-youn.tistory.com 3편 : https://developer-youn.tistory.com/126 jvm 조금씩 알아가기 3편 - 데이터 영역(Runtime Data Areas) 1편과 2편을 보고 읽으시는 것을 추천드립니다 1편 https://developer-youn.tist..
· JAVA/spring
0. 이 글의 목적 BooleanExpression을 쓰는 게 best practice일 수 있지만 더 심플한 방법을 찾다 보니 가능한 방법을 찾아서 메모 겸 적어두고자 함 1. 상황 querydsl을 이용해 db에서 데이터를 가져오려고 하는데 where조건을 동적으로 해야할 일이 생김 e.g. //회사 로직을 제거하기 위해 최대한 단어를 추상화함 queryFactory .from(dataEntity) .groupBy(dataEntity.column1) .select( dataEntity.column1, dataEntity.column2.as("tmp"), dataEntity.column3 ) .where(dataEntity.column1.between( requestCondition.condition1..
· JAVA
0. 왜 이걸 파보기 시작했는가 Annotation을 잘 사용하고 있고 springboot나 lombok을 사용하는 경우 정말 빼놓을 수가 없습니다. 근데 이게 어떻게 동작하는지 갑자기 의문이 생겼습니다. @RestController public class HelloController { @GetMapping("/hello") public String hello(String name) { return "hello " + name; } } @Override는 그렇다 치고 스프링부트 다루다 보면 정말 다양한 어노테이션들을 보게 되는데 그거 진짜 어떻게 동작하는 걸까요 1. 아무튼 그래서 Annotation이란? https://docs.oracle.com/javase/tutorial/java/annotatio..
· JAVA/spring
1. 환경설정 h2랑 maven 사용안하고 gradle과 mariadb로 진행하는 경우 아래처럼 설정 build.gradle implementation 'org.hibernate:hibernate-entitymanager:5.6.14.Final' implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.3' persistence.xml hellojpa.Member show_sql : query가 콘솔에 보임 format_sql : 콘솔에 보이는 query를 포맷팅 해줌 use_sql_comments: 왜 이 query가 호출되었는지 적어줌 jpa특징 Table, Column annotation으로 명시없이 사용하면 클래스의 이름을 table로, 필드의 이름을 ..
Berno
흔한 컴공 출신 개발자