현재 회사에서는 RestTemplate을 사용 간편하게 Rest 방식 API를 호출할 수 있는 Spring 내장 클래스 Rest API 서비스를 요청 후 응답 받을 수 있도록 설계되어있으며 HTTP 프로토콜의 메소드(ex. GET, POST, DELETE, PUT)들에 적합한 여러 메소드들을 제공 Spring Framework 5부터는 WebFlux 스택과 함께 Spring은 WebClient 라는 새로운 HTTP 클라이언트를 도입하여 기존의 동기식 API를 제공할 뿐 만 아니라 효율적인 비차단 및 비동기 접근 방식을 지원 https://tecoble.techcourse.co.kr/post/2021-07-25-resttemplate-webclient/ RestTemplate과 WebClient 이 글은 ..
"회원 가입을 시도한 로그를 남기는데 실패하더라도 회원 가입은 유지되게 해주세요." -> In my case: 인터페이스 로그를 남기는데 실패하더라도, 인터페이스 다른 프로세스들은 진행되도록 실행 @Transactional의 propagation 속성을 통해 피호출 트랜잭션의 입장에서는 호출한 쪽의 트랜잭션을 그대로 사용할 수도 있고, 새롭게 트랜잭션을 생성할 수도 있다. - REQUIRES_NEW : 부모 트랜잭션을 무시하고 무조건 새로운 트랜잭션이 생성 적용한 예시 코드 @Service @Transactional(propagation = Propagation.REQUIRES_NEW) public class IfExecuteLogService { ... https://hyuuny.tistory.com/..
리눅스 테스트, 공부 사이트 https://bellard.org/jslinux/ JSLinux JSLinux Run Linux or other Operating Systems in your browser! The following emulated systems are available: CPUOSUserInterfaceVFsyncaccessStartupLinkTEMUConfigComment x86Alpine Linux 3.12.0ConsoleYes click here url x86Alpine Linux 3.12.0X WindowYes click h bellard.org 기초명령어 정리 https://jjeongil.tistory.com/1848 Linux : 기초 명령어, 예제, 사용 방법 Windows..
Package는 클래스명의 고유성을 보장하기위해 존재한다 필요한 예시는 아래와 같다. 다른 두 사람이 서로 다른 목적을 가진 클래스를 이름이 같게 생성했다고 하면, 서로 다른 패키지를 사용함으로써 충돌을 피할 수 있다. 간단히 말하자면 자바에서 package없이 서로 다른 경로의 클래스에서 같은 이름으로 정의한 메소드를 모두 사용 할 방법이 없다는 것이다.
this. this는 객체 자신을 가르친다. 자신의 객체에 접근 할 때 사용된다. 주로 멤버변수와 메소드의 매개변수의 이름이 동일할 때, 이를 구분하기 위해 사용된다. 사용예제 public class People{ //멤버변수 int age; //메소드 void setAge(int a){ age = a; } } 위에서 매개변수 a의 이름을 멤버변수와 같게 하여 사용하고 싶으면 아래와 같이 this 키워드를 이용하면 된다. public class People{ //멤버변수(필드) int age; void setAge(int age){ this.age = age; //멤버변수 = 인자 } } this() this()는 같은 클래스에서 생성자가 다른 생성자를 호출할 때 사용된다. - 생성자 코드에서만 사용 할..
JVM 이란 자바 가상 머신으로서, 컴파일 된 바이트 코드를 기계어로 변환하고 메모리관리와 가비지 컬렉션을 수행합니다. 또한, JAVA와 OS(운영체제) 사이에서 중개자 역할을 하며 자바가 os에 구애받지 않고 독립적으로 작동하게 해줍니다. 런타임 데이터 영역 (Runtime Data Area) JVM의 메모리 영역, 자바 애플리케이션을 실행할 때 사용되는 데이터들 적재하는 영역이다. 자바의 실행과정 .java파일이 javac 컴파일러를 통해 .class 바이트코드로 컴파일된다. Class Loader를 통해 .class 파일들을 JVM에 올린다 JVM에 있는 .class 파일들을 Execution Engine의 Interpreter와 JIT Complier를 통해 해석된다 해석된 바이트 코드는 런타임 ..
조건식이 참인 경우 쿼리문을 실행하는 것들 차이점 true를 반환하는 태그를 찾으면 거기서 멈춤, 여러개의 태그는 오로지 한개의 태그내부 쿼리만 실행. 만약 태그의 조건식중 true 반환한 것이 없다면, 태그 내에 작성된 쿼리문이 실행. 태그는 생략 가능 문 적용시 SELECT * FROM BLOG WHERE state = ‘ACTIVE’ AND title like #{title} AND author_name like #{author.name} 위 예제를 , , 이용하면 아래와 같다. SELECT * FROM BLOG WHERE state = ‘ACTIVE’ AND title like #{title} AND author_name like #{author.name} AND featured = 1 참고 ht..
NAT Gateway NAT 게이트웨이는 NAT (Network Address Translation, 네트워크 주소 변환) 서비스이다. 즉, 외부 서비스에서 프라이빗 서브넷의 인스턴스로는 접근 할 수 없게 하고, 프라이빗 서브넷의 인스턴스에서는 외부 서비스로 접근 할 수 있게 하는 서비스 우선 AWS 관리자는 Bastion Host를 통해 Private Subnet으로 접근할 수 있다. 하지만 NAT Gateway가 없는 경우, Private Subnet에서는 외부 서비스 접근이 불가능하다. (예시 : MySQL 설치파일을 다운로드하는 것이 불가능) 따라서 NAT Gateway를 구성하는 것이 필요하다. 통신과정은 아래와 같다. Private Subnet에서 Public Subnet에 존재하는 NAT를 ..