JAVA/Java
-
인증 예외 처리 문제 해결 (2) - Spring Security의 인증 / 인가 예외 처리JAVA/Java 2023. 8. 21. 22:54
(지난 편,,,) ↓ https://dodop-blog.tistory.com/447 AuthenticationEntryPoint와 ControllerAdvice 최근에 sprign security를 이용한 인증 처리 과정을 구현하다가 리더님께 다음의 코드에서 예외처리가 예상한대로 동작하지 않을 것이라는 리뷰를 받았다. 내가 구현한 예외처리 코드를 예시로 보 dodop-blog.tistory.com 지난 편에서는 Filter에서 발생한 예외는 이를 처리하는 또 다른 Filter를 구현하여 예외를 처리할 수 있다고 하였다. 그런데, 이번에 발생한 문제는 Filter구현이 아닌 AuthenticationEntryPoint 구현만으로 원하는 에외 처리를 할 수 있었다. 어떻게 된 걸까? 이와 관련해서 Sprin..
-
인증 예외 처리 문제 해결 (1) - Filter와 InterceptorJAVA/Java 2023. 8. 20. 17:31
최근에 spring security를 이용한 인증 처리 과정을 구현하다가 리더님께 다음의 코드에서 예외처리가 예상한대로 동작하지 않을 것이라는 리뷰를 받았다. 내가 구현한 예외처리 코드를 예시로 보자면 예외 발생시 Controller Advice에서 예외를 정해진 ErrorResponse의 타입으로 반환하는 코드였다. @ControllerAdvice class ApiControllerAdvice { @ExceptionHandler(Exception::class, RuntimeException::class) fun exceptionHandle(exception: Exception): ResponseEntity { val standardError = ErrorResponse.of(exception) retu..
-
JVM 구조와 자바의 실행방식JAVA/Java 2022. 8. 5. 18:40
JVM이란 ? JVM(Java Virtual Machine)이란 스택 기반의 자바 가상 머신으로 컴파일러를 통해 바이트 코드로 변환된 자바 애플리케이션 파일을 클래스 로더를 통해 읽어 자바 API와 함께 실행하는 것으로 자바 프로그램 실행환경을 만들어 주는 소프트웨어을 수행한다. 자바 코드를 컴파일하여 .class 바이트 코드로 만들면 코드가 자바 가상 머신 환경에서 실행된다. JVM은 자바 실행 환경 JRE(Java Runtime Environment)에 포함되어 있습니다 .다른 하드웨어와 다르게 레지스터 기반이 아닌 스택 기반으로 동작한다. JVM을 사용함으로서 하나의 바이트 코드(.class)로 플랫폼에 영향받지 않고 모든 플랫폼에서 동작하도록 할 수 있다. 만약 C / C++에서는 컴파일 플랫폼과..
-
Stream에서 null 값을 다뤄야 할 때JAVA/Java 2022. 3. 4. 23:06
stream을 이용하고자 할 때 대상이 null값인 경우도 존재한다면 다음과 같이 구현하여 stream을 사용할 수 있다. Optional.ofNullable(대상).orElseGet(Collections::emptyList).filter(...) ( 그런데 객체는 우선 controller에서 받을 때 값 체크를 해주어야 한다...!) ( 참고한 사이트 ) https://stackoverflow.com/questions/17081063/how-should-we-manage-jdk8-stream-for-null-values How should we manage jdk8 stream for null values I know the subject may be a bit in advance as the JDK8..
-
Enum의 String 포함 여부를 확인하는 방법JAVA/Java 2022. 3. 4. 22:44
프로젝트 진행중에 category(enum 객체)의 이름이 넘어와 이것이 올바른 category인지 (enum의 이름에 속하는지) 확인이 필요한 상황이 발생했다. String과 일치하는 이름을 가진 Enum 타입이 존재 하는지를 확인하는 데에는 세가지 방법이 존재한다. ① EnumUtils (Apache Commons Lang3 library) https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 첫번째 방법은 라이브러리를 사용하여 구현하는 방법이다. 위 사이트를 통해서 프로젝트 타입에 맞는 버전을 dependency에 추가해준다. // boolean타입으로 값 반환 EnumUtils.isValidEnum(Category.class, "..
-
== 와 ===JAVA/Java 2022. 2. 25. 08:32
객체 == null검사를 진행할 때, ===와 ==의 정확한 차이점을 알기 위해서 알아보았다. int a = null; int b; //true a==null; //true a===null; //true b==null //false (b는 undefined의 상태이다) b===null 즉, ==는 null과 undefined를 같은 값으로 인식하고 ===는 정확하게 두 값이 일치할 때만 true를 반환한다. ( 참고한 사이트 ) https://hianna.tistory.com/376 [Javascript] '=='와 '==='의 차이 (null, undefined) 지난번에는 '==' 연산자와 '===' 연산자의 기본적인 차이점에 대해서 알아보았습니다. [Javascript] '==' 연산자와 '==='..
-
java.util.AbstractList.add(Unknown Source) 오류 발생 시JAVA/Java 2022. 2. 16. 21:15
Arrays.asList()를 이용하여 배열을 생성하고 값 추가하거나 삭제하려고 하는 경우에 해당 오류가 발생하였다. java.lang.UnsupportedOperationException at java.util.AbstractList.add(Unknown Source) 원인 Arrays.asList()는 고정된 사이즈 리스트를 반환하며 사이즈를 변경하는 add, set, remove메서드는 지원하지 않는다. (Collections.singletonList(T o)를 반환한다.) 따라서 Arrays.asList를 사용할 때에는 변경불가능한 리스트를 생성하거나 몇몇 변화만 허용하는 리스트를 생성시에 사용한다. 해결 변경을 허용하는 new ArrayList(Arrays.asList())를 사용하도록 하자. ..
-
IllegalStateException VS IllegalArgumentExceptionJAVA/Java 2022. 2. 13. 18:39
예외 처리를 부분을 작성하면서 IllegalStateException과 IllelgalArgumentException의 차이는 무엇인지, 어떤 상황에서 사용해야하는 지 궁금해졌다. IllegalStateException Signals that a method has been invoked at an illegal or inappropriate time. In other words, the Java environment or Java application is not in an appropriate state for the requested operation. 자바 정규 문서를 보면 적절하지 않거나 유효하지 않은 시간대에 메소드가 불러졌을 때 발생하는 예외로 정의되어있다. 즉, 죽은 쓰레드로 부터 불려지는..