본문 바로가기

반응형

JAVA

(12)
[Java] 내가 짠 Java코드를 컴퓨터가 어떻게 읽을까? (feat. JIT compiler) 안녕하세요, 도토리입니다. 잘못된 정보가 있거나 오류가 있으면 언제든지 댓글로 이야기 해주세요!! 😅 과거에 저는 컴퓨터가 어떻게 읽어서 우리의 코드를 실행시킬까에 대해서 무지했었습니다..(부끄럽네용..ㅎㅎ) 그래서 제목처럼 내가 짠 Java 코드를 컴퓨터는 어떻게 읽을까?라는 단순한 질문에 제대로 대답을 못하는 저 자신을 발견하고 그 의문점을 토대로 JVM에 대해서 이해하고 공부한 과정입니다. 이후에 JVM에 대해서 사내 지식공유회때 공유한적이 있는데, 이때 자료를 만들어둔것을 바탕으로 몇차례 나눠서 블로그에 글을 정리해보겠습니다.  컴퓨터는 어떤 언어를 읽어면서 구동되는걸까? 다들 많이 들어보시고 알고 계실겁니다. 컴퓨터는 자기가 읽을 수 있는 기계어(0과 1로 구성)를 읽어가면서 cpu에서 실행됩..
[Spring boot] 3.xx 버전에서 2.xx버전으로 낮추기 안녕하세요, 도토리입니다. 잘못된 정보가 있거나 오류가 있으면 언제든지 댓글로 이야기 해주세요!! 😅 이젠 더이상 start.spring.io에서나 intellij 에서 새로운 스프링 부트 프로젝트를 생성할때 2.xx 버전을 지원하지 않는다. 다양한 이유에서이겠지만, 가장 큰 이유들은 아래와 같다. 1. 보안 취약점 - 지원이 종료된 버전은 새로운 보안 취약점에 대한 패치가 제공되지 않을 수 있으므로 시스템의 보안에 위험이 있을 수 있습니다. 2. 호환성 문제 - Spring Boot의 새로운 버전과의 호환성이 보장되지 않을 수 있으므로 애플리케이션의 작동에 문제가 발생할 수 있습니다. 3. 지원 및 업데이트 Spring Boot에서 더 이상 업데이트 및 지원을 제공하지 않으므로 새로운 기능 및 개선 사..
Transactional readOnly에 대한 고찰 및 주의 사항(feat. JPA Entity Manager) 안녕하세요, 도토리입니다. 회사에서 다른 시스템 A와 연계를 위해서 A 시스템에 API를 만들어 달라고 했으며, 운영 배포를 진행했습니다. 그러나, 배포 후 A 시스템이 죽어버렸고(EC2 Down) 이후에 Roll back을 진행하였습니다. A 시스템 담당자와 문제되었던 commit의 코드를 리뷰하였고, 문제로 의심되는 부분은 기존에 @Transaction을 걸어두었던 부분을 담당자가 이 메서드는 단순히 db에서 조회해와서 return하는것이니 readonly=true라는 옵션을 추가해준것이였습니다. 예시 코드 (단순 예시이며, @Transactional부분과 메서드의 단순 db 조회 정도만 동일합니다.) // 기존의 소스 @Transactional public IntlWbl readonly(String..
[Spring Boot] Spring과 Spring Boot의 차이?!? 안녕하세요, 도토리입니다. 잘못된 정보가 있거나 오류가 있으면 언제든지 댓글로 이야기 해주세요!! 😅 흔히들 많은 백엔드 어플리케이션으로 구동되고 있는 스프링 부트..! 그러나 간혹가다 보이는 스프링..! 하지만 둘이 이름도 비슷하고 뭐... 스프링 프레임워크에서 더 쉽게 쓰게끔 만들어진게 스프링 부트이고 스프링 부트가 더 가볍니 뭐니 이런 이야기만 알고 있었다. 그래서 이번 기회에 공부하는겸 둘이 비교해서 정리를 해보려고 한다! 한줄 요약 스프링 프레임워크에서 관례로 설정되던 것을 미리 세팅하여 개발된 프레임워크가 스프링 부트이며, 또한 스프링 부트는 내장 톰켓 was 서버를 가지고 있다! 스프링 프레임워크?!? 스프링은 왜 스프링일까? 과거에 스프링 프레임 워크가 나오기 전에는 자바개발자들이 Ente..
[Junit5] Test Code 돌릴때 Jasypt 암호화로 인해 실패할때.. 안녕하세요, 도토리입니다. 잘못된 정보가 있거나 오류가 있으면 언제든지 댓글로 이야기 해주세요!! 😅 테스트코드가 중요하다는 말은 수없이 하여도 부족하다고 생각한다..! 물론 모든 케이스에 대해 완벽하게 테스트코드를 작성한다면 좋지만 우리 모두는 빠르게 기능개발 하는것 또한 매우 중요하다. 그렇게 평소와 같이 기능개발을 하다가, application.yaml에 db 서버 정보와 외부와 인터페이스하는 계정정보 혹은 key값들이 그대로 있는것이 보안조치사항에 걸려서 jasypt를 적용하여 아래와 같이 암호화 하였다. 그러나.. 암호화 하고나니 테스트코드 돌릴때 환경변수로 지정해둔 Encription 하는 Key값을 찾을 수 없다며... 서버가 뜨지도 않았으며 이로인해 테스트가 돌지 않는것이다.. // 생략 ..
[JAVA HashMap] Key 1개에 Value 2개 이상 담기 안녕하세요, 도토리입니다. 잘못된 정보가 있거나 오류가 있으면 언제든지 댓글로 이야기 해주세요!! 😅 회사에서 이미 운영중인 시스템에 Open API를 만드는 일을 맡게되어서 기존 소스를 조금씩 리펙토링하면서 API 서버를 만들고있다.. 개발하면서 공통코드를 어떻게하면 효율적으로 불러서 쓸 수 있을까 라는 문제에 직면하고 나름? 칭찬받으면서 해결한 부분이 있어서 공유하고자 한다! 공통코드가 어떻게 생겼을까? 이 시스템에는 모든 코드가 다 G로 시작하는 Gcode로 되어 있었다. 예를들어 USD / 달러 라는 우리가 통상적으로 미국달러를 USD라는 코드로 부른다. 그리고 찾아봤는데 ISO에 등재된 국제 표준으로써 USD 또한 공통 코드값이다. 하지만.. 이 시스템에서는 USD / 달러 이것들 조차 공통 G..
[JAVA] Exception을 떨어트리고 response를 custom 해보자! 안녕하세요, 도토리입니다. 잘못된 정보가 있거나 오류가 있으면 언제든지 댓글로 이야기 해주세요!! 😅 이번에 공통으로 Exception을 떨어트리고 공통 Response를 만드는 작업을 미래의 나와 모두에게 도움이 되고자 공유하려고 합니다. Exception을 생성해보자! 아래와 같이 예를들어 db에서 findById를 하였으나, 값이 없을 경우에 NotExistException을 떨어트린다고 가정해보자. // jpaRepository에서 상속받은 findById 코드.. 당연히 Null처리를 위해 Optional로 받겠죠? Optional findById(ID id); // 호출해서 사용하는 Service 부분 코드 public Customer findCustomer(String custNo) thro..
[Spring boot] AOP 적용 사례 (feat. AOP로 회원 인증을 구현해보자!) 안녕하세요, 도토리입니다. 잘못된 정보가 있거나 오류가 있으면 언제든지 댓글로 이야기 해주세요!! 😅 회사에서 음... 딱 AOP를 적용하면 좋겠을 부분이 있어서 구글링하면서 적용하려고 했는데.. 책에서 logging만 다룬건지.. 많은 글들이 logging 관련해서 HttpServeletRequest를 toString으로 찍어 로그찍는것들로만 예시를 들어두었길래 나는 간단하게 회원 인증으로 소개를 해보려고한다. (혹시.. 제가 적용한 방법이 잘못되었거나, 안좋은 예시라면 댓글 부탁드립니다.) AOP란? 먼저 예제를 설명하기 전에, 간단하게라도 AOP가 무엇인지에 대해서 알아보자! AOP는 Aspect Oriented Programming으로 아주 예전부터 있었던 개념이다. (우리 회사의 아주 오래된 2..

반응형