본문 바로가기
관리자

Programming-[Backend]/Java

(44)
자바 기초 강의 정리 - 1. 기초 ~ 함수, 제너릭까지 인프런 얄코의 제대로 파는 자바 강의를 듣고 정리한 내용이다. 중요하거나 실무를 하면서 놓치고 있었던 부분들 위주로만 요약 정리한다.자세한 내용은 강의를 직접 수강하는 것이 좋다.https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EC%9E%90%EB%B0%94/dashboard  1. 자료형자바에는 1 바이트 단위의 byte, 2바이트의 short도 있지만, int를 많이 사용한다. 타 언어들 및 라이브러리와 호환성을 위해서 이기도 하고, 대부분의 CPU에서 int의 4바이트(32비트)가 처리하기 적합한 크기이기 때문이기도 하다.float 대비 double은 표현 범위도 넓지만 표현의 정밀도도 더 크다.char는..
자바 linter, 포매팅 처리 : spotless, googlejavaformat, commit시 자동 적용 자바 코드의 문법 규칙을 만들고 자동으로 처리해주는 linter에 대해서 정리한다.  googlejavaformat구글에서 제공하는 format이다. 실제 구글에서 사용한다고 한다. intellij에서 설정하여 로컬로 사용할 수 있는데, 자세한 설정 방법은 아래 블로그를 참고하면 된다.https://velog.io/@ppinkypeach/IntelliJ%EC%97%90-Google-Java-Style-format-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0 *요약https://github.com/google/styleguide -> intellij-java-google-style.xml 파일을 다운환경 설정 -> Editor -> Code StyleScheme -> Import Sc..
[경험 요약] 자바 테스트 객체 자동으로 만들기: Instancio 라이브러리 오랜만에 자바-스프링 프로젝트를 진행하면서 테스트 케이스상 필요한 given 객체들을 만들어내야하는데, 각 속성값들을 직접 다 지정해줘야하는게 너무 불편했다. 파이썬-장고 계열에서는 Model Bakery를 사용했었는데, 자바에서는 그런 라이브러리를 사용한 기억이 없어서 라이브러리를 찾아보기로 했다! Instanciohttps://mvnrepository.com/artifact/org.instancio/instancio-junit  instancio를 maven repository에서 import 해와서 build.gradle에 포함시켰다. 간단한 사용법은 예시는 아래와 같다. user-guide를 5~10분만 보면 바로 어떤 건지 알 수 있다.https://www.instancio.org/user-gu..
[TIL][작성Java - @RequestBody null 문제: jackson, @NotNull, @NoArgsConstructor 문제 상황 controller와 @RequestBody를 아래처럼 정의하고, http POST request을 json 형태로 전송했다. 그런데 에러가 발생했다. @PostMapping("/stock") public void stockItem(@RequestBody @Valid ItemPo itemPo) { ... } // @Data public class ItemPo { @NotNull private ItemType itemType; } 에러코드 일부 Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of ... (no Creators, like default construc..
[TIL] 클래스 내 private 메서드 임시 테스트 @PostConstruct, Column 이름 예약어 escape 처리 1. 클래스 내 private 메서드 임시 테스트 테스트 코드를 남길 필요가 없거나, 테스트를 하기가 곤란한 경우 임시로 빠르게 테스트를 할 수 있는 방법으로 @PostConstruct를 이용할 수 있다. DB에 잘못된 데이터가 삽입될 수 있으므로 사용에 주의해야한다!! 위 그림처럼 Class내에 save... 메서드가 있고 이것을 임시 테스트하고 싶다면 @PostConstruct의 init() 메서드에 해당 메서드를 불러와서 실행하면 된다. 메서드에 들어가는 인자값들을 세팅해주고 세팅 과정에서 필요하다면 XxxRepository 같은 다른 클래스를 @Autowired로 주입받으면 된다. 이후 디버깅 모드로 breakpoints를 잡고 테스트해보면 파악이 힘든 에러나 동작 테스트를 임시로 해볼 수 있다...
자바 입력 : InputStream, InputStreamReader, BufferedStream, Scanner 자바의 기본 입력 API인 InputStream 등에 대해서 학습한다. 참조1의 설명이 잘 나와있어서, 그대로 따라해보며 기록 하였다. 1. Stream Stream은 마치 물이 연속적으로 흐르는 것과 같이 데이터가 연속적으로 존재한다는 것을 표현한 객체이다. 컴퓨터는 이진수로 이루어진 비트로 정보를 주고 받으며, 일반적으로 바이트코드(byte)로 데이터를 전달하기 때문에 스트림도 byte의 연속된 집합이라고 할 수 있다. 사용자의 키보드 입력, 파일 데이터, HTTP 송수신 데이터 등이 모두 스트림으로 간주되어 스트림 관련 API를 통해서 데이터를 처리하게 된다. 2. InputStream InputStream은 1996년 JDK 1.0에서 도입되었다. java.io 패키지에 속해 있다. InputSt..
에러 발생 시 특정 기능을 하도록 만들기 : 정적 팩토리 메서드 1. 필요성 에러가 발생했을 때, 에러 객체를 만들면서 동시에 메시지를 쏘는 기능을 하도록 만들어야했다. 에러 객체를 new 키워드를 써서 생성자를 통해 만들어주고, 이후에 메시지를 쏴야하는데 이미 에러는 throw 되어 그 다음 코드는 실행하지 않게 되었다. if(error) { throw new MessageException("에러 발생"); sendMessage(); //실행되지 않음 } 2. 해결방법 MessageException 객체의 생성자 자체에 sendMessage 로직을 넣어주면 된다! 그러나 이런 경우에는 의미를 명확하게 하기 위해서 MessageException 객체가 정적 팩토리 메서드로 만들어지도록 하는 것이 추천된다. public static MessageException get..
[TIL][링크] 자바 리스트 stream split 처리 - groupingBy Java8 Collectors groupingBy Map groups = testList.stream().collect(Collectors.groupingBy(i -> i / 3)); List listByCollectors = new ArrayList(groups.values()); //will be.. listByCollectors = {ArrayList@1058} size = 4 0 = {ArrayList@1093} size = 3 1 = {ArrayList@1094} size = 3 2 = {ArrayList@1095} size = 3 3 = {ArrayList@1096} size = 1 출처: https://jinseongsoft.tistory.com/312 [진성 소프트]