본문 바로가기

전체 글

(55)
PostMan으로 gRPC요청 하기 최근에 gRPC를 통한 서버간 통신을 구현해보기 위해 Spring Boot로 gRPC서버를 구현해 보았습니다.일반적으로 http 프로토콜을 통한 Rest Api를 테스트할때는 여러 방법이 있지만 그중 많이 사용한 툴은 PostMan인데 gRPC또한 PostMan으로 테스트가 가능하더군요. 그래서 오늘은 간략하게 PostMan을 통한 gRPC통신을 하는 방법을 공유해볼까 합니다. application.yml grpc: server: port: 5043먼저 Spring Boot gRPC 서버 환경은 다음과 같습니다. gRPC 프로토콜 포트는 5043입니다.delivery.proto syntax = "proto3"; option java_multiple_files = true; option java_packa..
섹션 7-6 [조건부 자동구성] 스프링 부트의 @Conditional 스프링 부트의 @Conditional더보기더보기💡Tip스프링의 프레임워크의 @Profile도 @Conditional 애노테이션이다.@Conditional(ProfileCondition.class)public @interface Profile {} 스프링 부트는 다음과 같은 종류의 @Conditional 애노테이션과 Condition을 제공한다 스프링 부트의 자동 구성은 @Conditional을 이용한다.Class Conditions@ConditionalOnClass@ConditionalOnMissingClass지정한 클래스의 프로젝트내 존재를 확인해서 포함 여부를 결정한다.주로 @Configuration 클래스 레벨에서 사용하지만 @Bean 메소드에서도 적용 가능하다. 단 클래스 레벨의 검증 없이 @B..
섹션 7-5 [조건부 자동구성] 자동 구성 정보 대체하기 자동 구성 정보 대체하기Spring Boot애플리케이션 구성 정보를 작성하는 방식은 크게 두 가지 나뉘어진다는 부분을 우리는 이전 공부한 내용을 토대로 이해할 수 있습니다.애플리케이션 로직을 담당하는 빈들을 사용자 구성 정보 방식으로 등록을 하고 주로 컴포넌트 스캔에 의해서 등록을 시킵니다.  일정한 패키지에 빈 클래스들을 등록합니다. 그리고 주로 기술과 관련된 빈들은 스프링 부트의 자동 구성 동작 방식에 의해서 말 그대로 자동으로 등록되게 구성합니다.이러한 이점을 통해 우리는 기존 스프링 프레임워크의 자율성으로 인해 환경을 구성하는데까지 너무나 많은 기술들을 결정하여 설정 했어야 하는 것에 비해 스프링 부트는 여러 개발자들에 의해 결정되고 노하우를 통해 정한 기술들을 미리 정의 하여 빠르게 스프링 프레..
섹션 7-4 [조건부 자동구성] 커스텀 @Conditional 커스텀 @Conditional@MyAutoConfiguration @Conditional(JettyWebServerConfig.JettyCondition.class) public class JettyWebServerConfig { @Bean("jettyWebServerFactory") public ServletWebServerFactory servletWebServerFactory() { return new JettyServletWebServerFactory(); } static class JettyCondition implements Condition { @Override public boolean mat..
섹션 7-3 [조건부 자동구성] @Conditional, Condition 학습 테스트 @Conditional, Condition 학습 테스트public class ConditionalTest { @Test void conditional() { // true // Bean 구성정보를 확인하여 테스트할 수 있는객체 ApplicationContextRunner 생성 ApplicationContextRunner contextRunner1 = new ApplicationContextRunner(); // Configuration 구성정보 Class를 매개변수로 넘겨주고 contextRunner1.withUserConfiguration(Config1.class) ..
섹션 7-2 [조건부 자동구성] @Conditional과 Condition @Conditional과 Condition@Conditional은 class레벨 뿐만 아니라 method레벨에도 애노테이션을 사용할 수 있습니다. 다만 class와 method에 동시에 애노테이션을 사용할경우 class레벨의 @Conditional이 우선순위가 가장 높으며 class레벨의 @Conditional의 Condition구현체의 값이 false라면 method레벨의 값은 체크하지않고 무조건 false로 bean으로 등록되지 않습니다. @MyAutoConfiguration /* JettyWebServerConfig를 ConFiguration class Bean으로 등록할 것인지 스프링 컨테이너에게 알려주는 애노테이션 @Conditional에는 Condition의 구현체 클래스를..
섹션 7-1 [조건부 자동구성] 스타터와 Jetty 서버 구성 추가 스타터와 Jetty 서버 구성 추가plugins { id 'java' id 'org.springframework.boot' version '2.7.6' id 'io.spring.dependency-management' version '1.1.5' } group = 'com.tobyspring' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' // Spr..
씽크패드 T14 Gen 4 Intel i7 리뷰 2024년 현재 노트북을 구매할때 성능은 그다지 큰 고민인 부분은 아니라고 생각합니다.성능만을 고려한다면 데스크탑이라는 좋은 선택지가 존재하고 엔트리 노트북 모델이던 플래그쉽 모델이던 성능상의 차이는 많이 줄어들었다고 생각합니다. (물론 디테일하게 하나하나 따져보면 차이는 존해하긴 합니다 흑..) 결국 엔트리와 플래그쉽에 차이는 썬더볼트와 같은 인터페이스, 무게, 내구성, 디자인, 마감 이라고 생각합니다. 사실 이야기 안했지만 노트북을 구매할때 가장 중요하건 내가 가지고싶은 노트북이냐가 제일 중요한거 같기는 합니다... 그래서 구매한 씽크패드 T14 GEN4! 디자인 40% 성능 30% 내구성 20% 휴대성 10% 가중치를 통해 짱꾸를 돌려서 구매했습니다.  i7-1360P, 32G RAM 노트북으로 성..