본문 바로가기
728x90
반응형

SpringBoot21

[SpringBoot] @Bean, @Autowired, TCP, UDP, URI, HTTP 메소드 이쁘게 그림도 넣고 설명하고 싶지만 지금은 공부만 하는걸로도 시간이 부족하다.. 일단 설명만,, 김영한의 스프링 핵심 원리 기본편 20240201 - 컴포넌트 스캔과 의존관계 자동 주입 - @Configuration : 싱글톤 보장 - 수동 빈등록 : @Bean - 자동 빈등록 : @ComponentScan, @Component - @Autowired : 의존관계 주입 - 의존관계 주입 방법 4가지 : 생성자 주입, setter 주입, 필드 주입, 일반 메서드 주입 20240204 - 스프링 빈으로 등록되지 않은 객체에 대한 @Autowired : required=false, @Nullable, Optional - 동일한 type의 빈을 여러개 찾은 경우 : @Autowired 필드명, @Quilifie.. 2024. 3. 18.
@InjectMocks 한 객체에 given()을 주면 어떻게 될까? 테스트코드를 작성하면서 의존성이 있는 객체의 메소드에 given().willReturn()을 설정했는데 예상했던대로 동작하지 않았습니다. 상황을 재연하면서 그 이유와, 어떻게 동작되는지를 알아보겠습니다.  CalculatorService를 만들었고 add도메인과, sub도메인을 만들어서 덧셈, 뺄셈 기능을 사용하였습니다. 그리고 곱하기는 Multiplier 클래스를 상속받아 사용하였습니다.------------------------------------   그리고 테스트코드는 아래와 같이 작성했습니다. 처음 생각했던 것은 메소드 3개에 다 given()을 주었으니까 150이 나오겠지? 였습니다. 결과는?다르게 나왔습니다.. mul 메소드에서 제가 given()으로 준 값이 아닌 코드상의 정상적인 계산이 .. 2023. 11. 30.
REST API request별 swagger3.0.0 파라미터 명세 REST API를 개발하던 중 파라미터를 swagger3.0.0 에 명세해야 했습니다.그런데 경우에 따라 조금씩 다르더라구요.유형별로 명세 방식을 알아보겠습니다!   1. Path Variablelocalhost:8080/userinfo/userid/{userId}/password/{password} Path Variable 방식으로 들어오는 파라미터는 @Parameter, @PathVariable 어노테이션을 통해 설명과 Variable 종류를 명세해줍니다.@Operation은 API에 대한 명세입니다. 전 후     2. Query Parameterlocalhost:8080/userinfo/userid/{userId}/password/{password}?phoneNo=01012345678&birthY.. 2023. 11. 29.
@RequiredArgsConstructor 와 @AllArgsConstructor @RequiredArgsConstructor @AllArgsConstructor 모두  Lombok 라이브러리에서 제공하는 어노테이션으로, 생성자를 자동으로 만들어주는 역할을 합니다. 이 둘의 차이점을 알아보겠습니다.  @RequiredArgsConstructor 는 final 로 선언된 필드에 대해서만 생성자를 만듭니다.import lombok.RequiredArgsConstructor;@RequiredArgsConstructorpublic class Example { private final int id; private String name; // final이 아닌 필드 // 생성자는 id만을 매개변수로 받음}이렇게 하면 다음 과 같은 생성자가  생성되는 것입니다.public Exam.. 2023. 11. 15.
@Transactional(readOnly = true) 중간에 save(insert) 하기 현재 시스템은 readerDB와 writerDB로 나뉘어져 있습니다.부하를 분산시키기 위해서입니다.https://orange-makiyato.tistory.com/75 DB 부하분산(간단 정리)일정 크기 이상의 서비스를 운영하는 회사에서는 대부분 데이터베이스 부하 분산을 위해 master-slave 형태로 reader-writer 인스턴스를 를 분리해 놓습니다. Primary cluster : 데이터베이스 클러스터에서orange-makiyato.tistory.com  한 API를 개발해야하는데 5개의 스텝중에 중간에 한 스텝만 save를 하는 로직입니다. 이걸 위해서 5개의 스텝을 모두 readerDB를 타게 하자니, 하루 평균 500만 call이 들어오는 API라 writerDB의 성능 저하가 우려되는.. 2023. 8. 3.
728x90
반응형