Spring에서는 @Component(@Controller, @Service, @Repository)을 이용하여 Bean을 생성할 수 있는데 이때 해당 클래스 내부의 메서드에 Proxy 기반으로 동작하는 어노테이션이 존재할 경우 target class 타입의 Bean이 아닌 Proxy로 래핑된 Bean이 생성된다. @Transactional, @Async, @Cacheable 등 이런 어노테이션들은 런타임 시 target class를 Proxy가 래핑하여 로직을 처리하는데 사용 시 주의할 점이 있다. 한번 살펴보자 Proxy Bean 생성 @Service 어노테이션으로 Bean을 생성 후 @Async 어노테이션으로 Future타입의 결과값을 반환하는 메서드를 선언하였다. 그리고 외부에서 접근이 가능한 S..
Java 애플리케이션을 AWS EC2에 배포하고나면 자주 발생되는 문제중 하나가 바로 타임존문제다. 타임존 문제는 쉽게 얘기해서 현재 시간과 서버의 시간이 맞지않아 현재날짜를 출력했을 때 이전 또는 이후의 시간이 출력되는건데 EC2 같은경우는 타임존이 UTC이고 한국은 타임존이 KST이다 KST는 UTC보다 9시간이 빠르기 때문에 Java 애플리케이션을 EC2에 배포하고 현재시간을 확인해보면 -9시간된 시간이 출력된다. 이 부분은 EC2에 배포할 때 간단하게 해결할 수 있다. 현재시간 출력 로컬에서 현재시간을 출력하는 애플리케이션을 개발하여 EC2에 배포해보자. JVM 파라미터 추가 EC2에 배포후 해당 Jar파일을 실행하면 현재시간보다 -9시간이 되서 나오지만 JVM 파라미터 중 user.timezon..
평소에 즐겨보는 개발자 유튜버 '치얼스헤나'님이라고 계시는데 이분의 유튜브 인터뷰에 출연하였습니다. 치얼스헤나님의 유튜브 영상들의 댓글들을 보면 신입개발자 및 국비교육생분들이 많다는 걸 느꼈습니다. 그런데 댓글을 읽으면서 개인적으로는 안타깝다 라고 느낀점이 있습니다. 1. 비전공인데 국비의 학습내용이 어려워 진도를 따라가지 못해서 멘탈이 붕괴되거나 2. 취업준비를 어떻게 해야 좋을지 3. 어떤방식으로 학습을 해야 좋을지 이런 댓글들이 있었는데 그걸 보니까 과거 저의 모습이 생각났습니다. 저 또한 위 3가지 케이스의 상황을 겪었습니다. 그래서 위 케이스들의 상황이 나에게 닥쳐올 때 어떻게 해야 극복해 나갈 수 있는지 이 영상을 봐주시는 국비교육생 & 개발자 취준생분들에게 조금이나마 도움이 되고자 영상에 출..
오늘 회사에서 운영하는 서비스에 장애가 발생되었는데 로그를 확인해보니 NullPointerException이 발생되었다. 그래서 해당 예외가 발생된 코드를 확인해봤는데 null값을 참조하여 코드를 작성한건 아니었다. 하지만 NullPointerException은 null값이 참조된 인스턴스의 필드 or 메서드를 호출한 경우 외에 다른상황에서도 발생될 수 있는데 그 케이스에 대해 알아보자. NullPointerException (1) str이라는 String 타입의 변수에 null을 할당하고 charAt() 메서드를 호출한 결과 NullPointerException이 발생되었다. str이라는 변수에 null이 할당됨으로써 객체의 주소값이 메모리상에서 제거되어 참조할 수 없는 값이 할당되었기 때문에 Null..