분류 전체보기

    Optional이란?

    Optional 나온 이유? Optional 클래스는 Java 8부터 나온 개념으로 NPE를 방지하기 위해 나왔다. 우리가 자바 개발을 할 때 객체가 null값을 주게되는 경우가 있다. 이때 이 객체를 참조하면 null을 참조하는 것이 되기 때문에 NPE[NullPointerException] 예외가 발생하게 된다. 때문에 개발자들은 NPE 발생을 줄이기 위해 null 확인을 하기 위한 조건문을 추가하였다. User user = userService.getUser(id); if(user != null) { String email = user.getEmail(); } 위와 같이 조건문으로 null 확인을 하여 NPE를 방지한다 하더라도 이러한 방식은 코드를 어지럽히기에 가독성을 저하시킨다. Java는 이를..

    Java 스트림(Stream) 정리

    Java 스트림(Stream) 정리

    읽기 전에 스트림에 대해 몇 가지만 상기도록하자!! 💡 스트림은 데이터 소스를 변경하지 않는다! 스트림은 데이터 소스로 부터 데이터를 읽기만 할 뿐, 데이터 소스를 변경하지 않는다. 필요에 따라, 정렬된 결과를 컬렉션이나 배열에 담아서 반환한다. List sortedList = list.stream() .sorted() .collect(Collectors.toList()); 💡 스트림은 일회용이다. 스트림은 Iterator 처럼 한 번만 탐색할 수 있다. 만약 다시 탐색하고 싶다면 새로운 스트림을 만들어야 한다. Stream strStream = list.stream(); strStream.forEach(System.out::println); strStream.forEach(System.out::prin..

    [Java] 스트림 생성 (리스트, 배열을 스트림으로, 숫자 범위로부터 스트림, 파일로부터 스트림)

    Collection의 Stream 생성 Stream stream = list.stream(); List list = Arrays.asList("kim", "lee", "choo"); 배열의 Stream 생성 Arrays의 stream 메소드 Stream stream = Arrays.stream(strArray); Stream stream = Arrays.stream(new String[] {"kim", "lee", "choo"}); Stream의 of 메소드 Stream stream = Stream.of(new String[] {"kim", "lee", "choo"}); // 가변 인자 Stream stream = Stream.of("kim", "lee", "choo"); 숫자 범위로부터 Stream 생..

    [Java] 변수명, 메소드명 작성법

    Java 변수명 첫 글자 소문자 + 카멜 표기법을 사용 (lower Camel Case) 특수 문자는 '_'과 '$'만 허용 의도 분명한 구체적인 변수명 짓기 boolean 변수인 경우 접두어는 'is' 접미어는 ok/check/found/success/done/error List, Collection 등의 자료형은 복수형으로 표현한다. ex) memberList X → members Java 메소드명 첫 글자 소문자 + 카멜 표기법을 사용 (lower Camel Case) 의도 분명한 메소드명 짓기 고려사항: 왜 존재하는가 / 어떤 작업을 하는가 / 어떻게 작업하는가 메소드 접두어는 동사로 시작한다. get/set is/has/can init find, check etc.. 다른 타입으로 변환하거나 빌..

    Git 깃 커밋 메시지 작성 규칙(git commit message convention)

    Git 깃 커밋 메시지 작성 규칙(git commit message convention)

    Git Commit Message 작성 규칙 깃 커밋 메시지 작성할 때 일관성 없이 작성을 하게 되면 가독성이 매우 떨어지고, 특히 협업을 할 경우 이러한 문제는 더욱 드러나게 된다. 때문에 깃 커밋 메시지를 작성 시 일관성 있는 규칙을 지켜 작성하는 것이 좋다. 다음은 Udacity Git 커밋 메시지 스타일 가이드이다. ## Message Structure 깃 커밋 메시지는 제목/본문/꼬리말로 구성되며 작성 시 개행으로 서로를 구분하여 작성해준다. type: Subject body footer Type 제목에 해당하는 부분 feat: 새로운 기능을 추가 fix: 버그 수정 docs: 문서 수정 style: 포맷팅, 코드 변경 없는 수정 refactor: 리팩토링 test: 테스트 코드 chore: 빌..

    Spring @ControllAdvice와 @ExceptionHandler로 전역 예외처리 하기

    Spring @ControllAdvice와 @ExceptionHandler로 전역 예외처리 하기

    @ExceptionHandler `@ExceptionHandler`는 특정 예외가 발생했을 때 해당 예외를 처리하는 메서드를 정의할 수 있습니다. `@ExceptionHandler`는 적용 범위 제한이 있는데, `@Contoller`, `@RestController`, `@ControllerAdvice`에서 사용이 가능합니다. 컨트롤러가 적용된 Bean에서 발생하는 예외를 잡고 해당 예외가 설정된 `@ExceptionHandler`가 적용된 메서드가 실행됩니다. @Controller public class demoController { //... @ExceptionHandler(Exception.class) public ResponseEntity handleException(Exception ex) { ..

    Google Login (OAuth2.0: Open Authorization)

    Google Login (OAuth2.0: Open Authorization)

    Google 서비스 등록 https://console.cloud.google.com/getting-started Google Cloud console console.cloud.google.com 1.새 프로젝트 생성 2.생성한 프로젝트 선택 사이드에 있는 네비게이션 바에서 아래 이미지 처럼 클릭 3.사용자 인증 정보 -> OAuth 클라이언트 ID 만약 OAuth 동의를 하지 않은 상태면 아래 버튼을 클릭하여 OAuth 동의를해준다. OAuth 동의를 했다면 3-2) 단계로 넘어가자. 3-1)OAuth 동의 채울 수 있는 부분을 채워준 후 [2:범위] 단계로 넘어간다. 사용자의 정보를 어느 범위까지 액세스할 수 있는지 결정하는 곳이다. 테스트할 사용자의 메일을 입력해준다. 3-2) OAuth 클라이언트 ..

    Thymeleaf에서 Spring Security 이용

    Thymeleaf에서 Spring Security 이용

    설정 implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' 코드 Member Page ADMIN ROLE MANAGER ROLE USER ROLE ADMIN OR MANAGER ROLE 인증한 경우 익명인 경우(인증한 경우를 제외한 경우) Authenticated username: Authenticated user roles: 모든 권한을 가진 1user@dutmdcjf.com으로 접속한 경우 USER 권한만 가진 100user@dutmdcjf.com으로 접속한 경우