분류 전체보기
-
@ControllerAdvice, @ExceptionHanlderSpring 2023. 3. 18. 17:36
ExceptionHandler 어노테이션은 Controller와 RestController 클래스에서 발생한 예외를 별도의 메소드를 custom으로 생성해서 처리해준다. 쉽게 설명하자면 Controller 클래스에서 발생하는 예외 처리는 필드가 많아질 수록 복잡해진다. BindingResult result if(result.hasError()){ List fieldErros = result.getFieldErrors(); FieldError fieldError = fieldErrors.get(0); String fieldName = fieldError.getField(); String ErrorMessage = fieldError.getDefaultMessage(); Map error = new Hash..
-
Optional 그리고 NPE(Null Pointer Exception) 방지Java 2023. 3. 17. 15:46
Optional은 Null로 넘어온 값을 어떠한 값으로 처리해줘서 NPE가 일어나는 것을 방지해준다. public void delete(Integer id){ SpringBoard springBoard = boardRepository.findById(id) .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 글입니다.")); boardRepository.delete(springBoard); } 위 코드는 게시글 삭제 기능을 구현한 것이다.
-
@RequestParam 생략 가능Spring 2023. 3. 17. 15:29
@RequestParam은 어노테이션을 생략 가능하다. 대신에 변수 명이 요청 파라미터 명과 같아야 한다. @GetMapping("/boardDelete") public String boardDelete(Integer id){ boardService.boardDelete(id); return "redirect:/boardList"; } 위 코드를 보면 분명히 파라미터로 넘어온 id 값을 사용해서 게시글을 제거하는 것일 텐데 @RequestParam이 제거되어있다. 만약 @RequestParam 어노테이션을 제거해도 되는 사실을 모른다면 인자로 Integer id로만 선언을 해줬는데 정상적으로 내가 원하는 게시글이 삭제될 수 있는 이유를 알지 못할 것이다. 위 코드를 조금 더 상세하게 선언해 보자면 @Ge..
-
builder 패턴Java 2023. 3. 16. 13:05
builder 패턴을 사용해야 하는 이유 1. 의도하지 않는 데이터 변경을 예방할 수 있음. 2. 필요한 데이터만 생성, 변경 가능 3. 가독성이 좋음 게시글 등록에서의 builder 패턴 // Post 클래스 private String title; private String content; @Builder public Post(String title, String content){ //클래스 생성자, Builder 패턴 적용 this.title = title; this.content = content; } // ServiceTest 클래스 //given Post request = Post.builder() .title("제목") .content("컨텐츠") .build(); //wben boardRep..
-
AnnotationProcessorSpring 2023. 3. 15. 17:16
AnnotationProcessor ? : Annotation Processor는 컴파일 단계에서 Annotation에 정의된 일렬의 프로세스를 동작하게 하는 것을 의미합니다. 컴파일 단계에서 실행되기 때문에, 빌드 단계에서 에러를 출력하게 할 수 있고, 소스코드 및 바이트 코드를 생성할 수도 있습니다. 사용하는 예로 자바의 @Override가 있으며, Lombok(롬북)이라는 라이브러리도 있습니다. [출처 : https://roadj.tistory.com/9]
-
[프로그래머스][기지국설치]알고리즘 2023. 2. 9. 22:42
문제 설명 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5g 기지국은 4g 기지국보다 전달 범위가 좁아, 4g 기지국을 5g 기지국으로 바꾸면 어떤 아파트에는 전파가 도달하지 않습니다. 예를 들어 11개의 아파트가 쭉 늘어서 있고, [4, 11] 번째 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 만약 이 4g 기지국이 전파 도달 거리가 1인 5g 기지국으로 바뀔 경우 모든 아파트에 전파를 전달할 수 없습니다. (전파의 도달 거리가 W일 땐, 기지국이 설치된 아파트를 기준으로 전파를 양쪽으로 W만큼 전달할 수 있습니다.) 더 자세한 문제 설명은 프로..
-
[프로그래머스][스티커모으기(2)]알고리즘 2023. 2. 9. 22:41
문제 설명 N개의 스티커가 원형으로 연결되어 있습니다. 다음 그림은 N = 8인 경우의 예시입니다. 원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내어 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록 하고 싶습니다. 단 스티커 한 장을 뜯어내면 양쪽으로 인접해있는 스티커는 찢어져서 사용할 수 없게 됩니다. 예를 들어 위 그림에서 14가 적힌 스티커를 뜯으면 인접해있는 10, 6이 적힌 스티커는 사용할 수 없습니다. 스티커에 적힌 숫자가 배열 형태로 주어질 때, 스티커를 뜯어내어 얻을 수 있는 숫자의 합의 최댓값을 return 하는 solution 함수를 완성해 주세요. 원형의 스티커 모양을 위해 배열의 첫 번째 원소와 마지막 원소가 서로 연결되어 있다고 간주합니다. 나의 풀이(실패) package pr..