본문 바로가기

JAVA/요점정리12

클린코드(clean code)를 읽고 요점 정리 및 코딩의 방향성 잡기 시작 클린 코드. 말그대로 깔끔한 코드를 작성하기 위해 개발자가 알아야 할 사항들을 집필한 교과서 같은 책이었습니다. 다만 우리나라 저자가 아닌 점, 최초 발행일이 2008년인 점을 감안하여 맹목적으로 따르는 것이 아닌 옳은 방향을 잡는 나침반과 같은 용도로 삼아야겠다 생각했습니다. 회고  클린 코드의 옮긴이는 서문에서부터 시간에 쫓겨 나쁜 코드를 작성한 자신을 후회한다고 반성하였습니다. 1회독을 한 저도 그와 같이 반성을 하게 되었습니다. 이 책은 그런 책입니다. 개발에 대한 꿈을 가지고 공부한 뒤 입사를 하였지만 시간이 흐르며 일정에 치이고 현실과 타협한다는 자기합리화로 편한 길을 찾느라 망가진 코드에 대해 생각하게 만듭니다. 비슷해 보이는 기능을 찾아 제대로 검토하지 않고 복사 붙혀넣기를 하고 그저.. 2024. 6. 12.
스프링 부트 DI - 필드 주입과 생성자 주입의 초기화 시점 DI(의존성 주입)의존성 주입이란 객체가 스프링 빈에 등록된 다른 객체를 필요로 할 경우 해당하는 객체를 가져오는(주입해주는) 행위이다.전통적인 자바에서는 스스로 객체를 생성하거나 찾지만 스프링 부트에서는 이 과정을 외부에서 처리한다. (SOLID원칙을 지켜 객체 간 결합도를 낮추고 코드의 유연성을 증가함.)의존성 주입의 유형생성자 주입수정자(setter) 주입필드 주입일반 메소드 주입포스팅을 하게 된 배경과거 실무에서 저는 이 필드 주입만을 사용하여 DI를 진행했습니다. 그러나 김영한 선생님의 강의를 들으며 이 필드 주입은 그다지 권장하지 않는 방법이다, 라는 것을 배웠습니다.why?-> 필드 주입을 할 경우 객체가 생성되고 난 뒤에 의존성 주입이 일어나기 때문에 객체가 가변적이게 됩니다.-> 이는 다.. 2024. 6. 12.
스프링 부트 유효성 검증 예외처리하는 방법(jakarta validation) 시작SI 회사에 재직할때부터 유효성 검증하는 방법은 꽤 자주 바뀌었다. 자바 jsp를 주로 사용해서 그냥 jsp에서 모두 처리를 하고 백엔드에서 처리해야할 로직이 있을 경우에만 service단에서 처리하기도 했다. 나중에는 컨트롤러와 jsp에서 더블체킹하기도 했고 dto의 어노테이션을 사용하여 컨트롤러에서 BindResult 객체를 사용하여 처리를 하기도 했다.사이드 프로젝트를 진행하며 이에 대해 고민하다 나름대로 길을 정하여 그 과정을 포스팅해보고자 한다.Service 처리재직 초반에 사용했던 방법이다. 로그인 API를 예로 들자면, 아이디나 패스워드가 공백은 아닌지, 패스워드 정규식을 만족하는지 등의 체크사항들이 있을 것이다. 그중 프론트엔드에서 처리 가능한 로직은 jsp단에서 전부 체크한다.if(x.. 2024. 6. 12.
[스프링부트] 외부(이카운트) API 연동하여 데이터 통신 feat:HttpUrlConnection 서론 업무 중 외부 API 연동해야 하는 일이 생겼다. 원래라면 만들어둔 소스를 갔다 쓸텐데 Content-Type 관련해서 맞지 않는지 제대로 작동하지 않아서 직접 만들어썼다(라고 말하고 다른 프로젝트에 있던 소스 커스텀만 한거지만). 기능들에 대해 간단히 정리하고 기억하기 위해서 포스팅을 한다. (더 간단하고 쉽거나 효율적인 방법이 있을 수 있으므로 참고만 하시길.) 외부 API 연동관련 정보 연동하기 위해선 몇가지 알아야할 정보가 있다. 나같은 경우 재고관리를 위해 이카운트API라는 것을 사용해야 했고 해당 안내페이지에서 찾을 수 있었다. 다른 API도 홈페이지에 들어가보면 연동에 필요한 기본 정보를 제공하고 있을 것이다. (혹시 모르니 이카운트 URL을 남겨둔다.) https://sboapi.ec.. 2023. 12. 8.
[자바] JSON, JSONArray, JSONObject, 또 파싱하는법.. 프로젝트에서 사용하는 JSON의 개념에 대하여 개요 프로젝트를 진행하다보면 JSON형태로 데이터를 전달하는 경우가 많다. 데이터를 넣고 빼기가 쉽고 텍스트로 이루어져 있어 사람이 직관적으로 볼 수 있기 때문이다. 그런데 이걸 사용하면서도 여기서 이걸 쓰나? 이렇게 파싱하는게 맞나? 어 에러 안나네. 근데 왜 이렇게 파싱하는거지? 이렇게하면 왜 파싱 오류가 뜨는거지? 하면서 의문을 가질 때가 종종 있다. 그래서 그런 혼동을 줄여보고자 개념을 정리하는 시간을 가졌다. JSON? '키-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷' 이다. JSON을 한번이라도 써보면 get을 이용해 값을 가져오고 put을 이용해 값을 넣는 것을 봤을 것이다. 이 때, key를 사용해서 value를 가져오고 값.. 2023. 3. 13.
[자바] JAVA날짜, 시간 세팅 하고 싶을 때 : 연도 날짜 시간 클래스 GregorianCalendar(Feat.SimpleDateFormat) 개요 자바를 사용할 때 날짜를 넣어줄 때가 많다. 그래서 자바에는 Calendar라는 클래스가 존재한다. 그 중에서도 우리 나라 표준시인 GregorianCalendar에 대해 알아보고자 한다. GregorianCalendar은 Calendar클래스를 상속받은 것으로 우리 나라 외 다른 나라 시간도 지원한다. GregorianCalendar를 써보면서 가장 편리한 점이라면 날짜, 시간을 세팅하기가 굉장히 편리하다는 점이었다. 선언 //선언 GregorianCalendar cal = new GregorianCalendar(); 생성자를 이용해 생성한다. 사용 System.out.println(cal.getTime()); //결과 Wed Dec 10 18:12:05 KST 2022 값을 출력하면 이런 식으로.. 2023. 3. 8.