본문 바로가기
반응형

자바13

[Spring] TDD Controller 변수가 RequestParam 이 많을때 컨트롤러를 테스트하면서 URL에 날짜 2개 와, 캠페인ID가 필요했습니다. 그러면 실패코드가 뭐 날짜가 누락된경우, 캠페인아이디가 누락된경우, 아무것도 없는경우 등등 모든경우를 다 하면 너무 많이 나옵니다. 이럴때 사용하는 것이 @ParameterizedTest@MethodSource 를 사용해주면 됩니다. 테스트 메서드에 다양한 입력값을 전달하며 여러번 실행 할 수 있게하며, 데이터는 외부 메서드 에서 생성되며 Stream API형식으로 반환됩니다.@ParameterizedTest@DisplayName("getCampaignDetails() : 파라미터 값 누락")@WithAuthUser@MethodSource("invalidGetCampaignDetailsUrl")void test(String url.. 2024. 12. 31.
[Spring/MSA]Msa구조 데이터 롤백 어떻게 해야할까 ??(1) 하.. 아까 쓰던게 사라졌다. 오히려 좋다 복습을 하게 되니 자 질문은 Msa구조에서 순차적으로 api를 요청할 때 1차 api 에서는 정상적으로 처리되어 db 커밋이 완료되었고 2차 api 요청에서 에러가 났을 때 1차 api에서 커밋 된 것을 어떻게 롤백할 것인가 이다. 이거에 대한 일단 정답은 SAGA 패턴이라는 것이다. SAGA 패턴을 알아보기 전에모노로그 식 개발에서는 어떻게 했을까를 생각해보면 서비스 단 혹은 Method 에 @Transactional 을 달아주었다. 우리는 @Transactional 하면 그냥 아 중간에 무슨일이 터지면 다시 되돌려 주는거 아니야 ? 라고 생각이 든다. 맞는 말이다. 근데 중간에 누가? 어디서 해주는지 생각해 보았나 ? 그냥 강의 에서 해준다고 하니 해주는걸로.. 2024. 8. 2.
[Spring/JPA] SpringContext, ApplicationContext, BeanFactory 관계 그리고 SpringSecuritycontext 와 SpringContext 의 관계 최근 제 주변 코딩 잘하는 사람이 면접을 보고 왔는데 질문이  SpringSecuritycontext 와 spring context 라이프사이클을 섞어서 설명하고 포크되는 순간과 어떻게 동작하는가였습니다.  질문을 듣는 순간 머리가 멍 해졌고 생각해보지도 못한 질문이였습니다.오늘은 그 라이프사이클을 파악하면서, Spring Context, Application Context, SpringSecurityContext 에 대해 알아보도록 하겠습니다. 일단 저 문제에 대한 정답을 먼저 알려드리자면  Spring Application 이 시작될때 ApplicationContext가 초기화 되고 Application의 설정 정보와 빈 정보를 로드하고, 모든 빈을 생성 및 초기화 하는 단계입니다. 이 때 Spri.. 2024. 7. 10.
[Spring/JPA] 로그 관리 로그 : sout(”Hello world”); ⇒ 중요도 분리가 안된다. ⇒ 중요도에 따라 로그레벨 관리 해야한다.debug 모드 (모든 로그가 다 나온다.)log.debug(”debug 모드입니다.”)info 모드log.info(”일반로그”)error모드 (가장 엄격 , error 로그만 나온다.)log.error(”일반로그”)로그 라이브러리 (log4j, logback)로그관리 (debug, info, error)로그파일관리.ymllogging: level: root: info # info로 설정 # trace  사용방법 1.@RestController@Slf4j // log 어노테이션 (롬복)public class LogTestController { @GetMapping("log/.. 2024. 6. 25.
Redis 부숴버리기(3) 캐싱 레디스의 기능중에 캐싱 기능이 있었는데 캐싱기능을 사용하면 레디스에 저장하고 데이터가 레디스에 담겨있으면 꺼내오는식으로 이루어진다.  캐시란 데이터를 미리 복사해 놓은 임시 저장소를 말한다. 이러한 캐시 기능을 사용하면 성능향상에 큰 이점을 주고 db에 접근하는것을 최대한 막아준다. 캐시를 적용해 보도록 하겠다. 이번에는 Redis 부숴버리기(2) 에 설정과는 좀 다르고 (1)과 설정이 비슷하다.  configuration @Configuration@EnableRedisRepositories@Slf4j@EnableCachingpublic class RedisConfig{ @Value("${spring.redis.host}") private String redisHost; @Value("$.. 2024. 5. 13.
JAVA FlatMap, Map 프로젝트를 진행중에 내 #달 근무 표를 뽑아야 했다. 출퇴근을 찍는 테이블인 Commute 가 있었고 휴가랑, 출장, 시차근무제를 신청한경우 Attendence 테이블에 추가도 되는 식으로 진행돼서 이 두개를 매칭해서 내 근무표를 뽑아온다. Service public List MonthlyAttendance(String employeeId, CommuteListReqDto commuteListReqDto) { Employee employee = employeeRepository.findByEmployeeId(employeeId).orElseThrow(() -> new IllegalArgumentException(" 없는 회원입니다. ")); LocalDateTime month = commuteListRe.. 2024. 4. 20.
반응형