logback.xml 파일을 이용하여 로그 남기기 - Mybatis를 이용하여 쿼리를 실행할 때 동적으로 작성한 쿼리의 실제 실행 모습이 보고싶었음. - log4j를 이용했을 때는 net.sf.log4jdbc.Log4jdbcProxyDataSource 클래스로 DataSource를 만들어야 했으므로 설정을 변경하는 일이 있었음. (application.properties 나 Config 파일을 수정해야하는 경우) - 그냥 DEBUG와 단순 INFO로 켜고 끄는 기능을 찾고 싶었음. logback 파일 생성 ver. 1 %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n - 처음에는 단순히 로그를 좀 더 자세히 찍고 실행되는 SQL 쿼리를 보고 싶었음. - ro..
자바 혹은 다른 언어 프로그래밍을 할 때, 디버깅은 필수적인 단계입니다. 내가 코드를 작성하고 완전하지 않은 코드에서 발생하는 버그를 발견하고 수정하는 작업인데요. 모든 IDE에서 제공하는지는 잘 모르겠지만 제가 사용해봤던 인텔리제이(IntelliJ)라는 소프트웨어에서는 디버깅 모드를 제공해줍니다.(브라우저에서 제공하는 디버깅모드와 같습니다.) 그런데 어느 날, 회사에서는 내부망을 구축해서 DB를 내부망을 통해서만 붙을 수 있는 구조였고 그런 과정에서 서버 프로젝트 하나를 켜는데 많은 시간이 걸렸습니다. 내용을 보니 "breakpoint가 너무 많아서 속도가 많이 저하될 수 있다"는 영문 메시지였습니다. 하나하나 breakpoint를 지워가며 속도를 올려보려 했지만 정확히 어디에 breakpoint를 설..
안녕하세요.!! 오늘은 단방향이겠지만 블로그 운영 관련해서 소식을 자랑해보고 싶어서 글 하나 더써보겠습니다.!! 제가 Web 개발 및 서버 프로그래밍을 주제로 블로그를 시작한지 어언 1년하고 3개월이 지난것 같습니다. 그런데 오늘!! 아직 목표치 달성은 아니지만 2/3에 달하는 성과를 내서 자랑하러 왔습니다ㅎㅎ 일일 방문자수 2000 돌파!! 일단 0에서 시작해서 남들에게 알려지기까지 많은 글들을 썻었는데요. 어디서든 소스를 찾아서 남들과 공유하는 것을 오프라인에서 조차 즐겼던 저로써는 블로그 포스팅으로도 다른 분들에게 공유할 수 있는 것을 또 그러한 행동을 굳이 하는 것을 나름 뿌듯하게 여기고 있었습니다. 실제로도 프로그래밍을 하면서 나름 내밀 수 있는 포트폴리오로 성장을 하기도 했구요. 이제는 그 이..
안녕하세요. 오늘은 커스텀 어노테이션을 활용하여 컨트롤러에서 메소드에 선언된 파라미터에서 세션 유저를 받아올 수 있도록 하는 HandlerMethodArgumentResolver 예제를 공유하고자 합니다. 우선 이전에 포스팅했었던 커스텀 어노테이션을 만드는 상세한 내용은 아래의 포스팅을 참조해주시기 바랍니다!! 2020/01/13 - [프로그래밍 언어/[Java] Study 내용 ] - [Java] Custom Annotation 커스텀 어노테이션 만들기(reflection 리플렉션) [Java] Custom Annotation 커스텀 어노테이션 만들기(reflection 리플렉션) 자바에서 커스텀 어노테이션을 만드는 방법은 다음과 같다. public @interface MyAnnotation { } 사..
안녕하세요. 오늘 맥OS 터미널 관련해서 공유드릴 것이 있어서 포스팅합니다. 저는 작업을 할때 스프링부트, 리액트 어플리케이션을 각각 IDE나 터미널 창에서 실행하여 작업하곤 하는데 IDE보다는 터미널에서 자주 실행하는 편입니다. 그런데 매번 오류를 수정하고 어플리케이션을 켤때보면 예컨데 3000번이었던 어플리케이션 포트가 3001번으로 켜지는겁니다. 3000번 포트를 미리 잡고있었던 것이죠. 문제점 분명히 Control + Z를 누르고 터미널에서 종료된 것을 확인을 했는데도 프로세스 검색 명령어( lsof -i: 포트번호 )를 통해서 검색해보면 살아있는 겁니다. 결론 알고보니 제가 명령어를 잘못 알고있었던 거였어요. control + z는 프로세스 정지명령어입니다. 프로세스가 종료된 상태로 있던 것이 ..
자바프로그래머들이 마주하는 가장 흔한 Exception은 NullpointerException 에러입니다. 이 Exception은 JVM에 의해 발생되는 RuntimeException 중 하나입니다. 여러분들도 아시다시피 NullpointerException은 애플리케이션은 Object가 필요한데 이 값이 null 값일 때 발생하는 에러입니다. Null 값은 자바프로그래머들이 대부분 쉽게 간과할 만한 케이스입니다. Null 값은 비즈니스 로직에서 NullpointerException이 발생하지 않도록 애플리케이션 내부에서 처리되어야 합니다. 이것은 불필요한 null 체크 코드를 만들어내게 됩니다. 이러한 뻔한 코드들을 처리하기 위해서, Java 8에서 Optional 타입이 도입되었습니다. Oracle에..
서론 당신은 스프링부트에 대해서 들어봤을 것입니다. 스프링부트는 단 140여 글자로 스프링 웹 어플리케이션을 만들 수 있 습니다. 그런데 이게 무엇을 뜻하는지 아시나요? 스프링부트에 강력한 기능을 제공하고 스프링 개발을 쉽게하도록 하는 기능은 무엇일까요? 이것이 바로 이번 포스팅에서 살펴볼 내용입니다. 이번 포스팅에서는 스프링부트의 자동설정, 스타 터 디펜던시, 스프링부트 CLI, Actuator, Spring Initializer에 대해 깊게 살펴보겠습니다. 이것들은 대부분 Spring 기반 Java 웹어플리케이션을 개발할 때 발생했던 고통과 어려움을 없애주는 기능입니다. 먼저 본론으로 들어가기전, 스프링 자바 기반 개발을 할때 발생하는 문제들을 되짚어봅시다. 스프링은 의심할 여지없이 훌륭한 프레임워크..
현재 Rest API 개발과 함께 풀스택을 지향하며 Vuejs를 학습하며 서버와 클라이언트를 모두 학습중입니다. 직장에서는 서버 API 개발을 하면서 실무에서 배워가면 학습을 하고 있는 편입니다. 그런데 API를 먼저 TDD를 통한 개발방법, Postman으로 테스트해보면서 Vue 프레임워크를 이용해서 프론트를 입히는 작업을 하는 도중 한가지 이슈에 봉착하게 되었습니다. 바로 교차출처 리소스 공유인데요. 흔히 CORS라고 축약되어 부르는 단어입니다. 이는 기존에 많은 SI에서 채택한 Spring, JSP를 이용한 개발에서는 확인하기 힘든 이슈였습니다. 이유는 서버사이드 렌더링으로 모든 페이지들을 불러오고 필요한 데이터 호출은 Ajax로 처리하던 기존의 방식은 서버와 클라이언트의 출처(Resource)가 ..