전체 글

· BE/Spring
// TemplateServiceTest @DisplayName("템플릿 작성자는 템플릿을 삭제할 수 있다.") @Test void deleteTemplateTest() { //given var position = positionRepository.save(UserFixtures.createPosition()); var user = UserFixtures.createUser(position); var savedUser = userRepository.save(user); var template = createTemplate(savedUser); var savedTemplate = templateRepository.save(template); //when templateService.deleteTemplat..
· BE/Spring
// @Transaction 사용 X @DisplayName("템플릿 수정 요청을 받아서 기존 템플릿을 업데이트한다.") @Test void updateTemplateTest() { var position = positionRepository.save(UserFixtures.createPosition()); var user = UserFixtures.createUser(position); var savedUser = userRepository.save(user); var template = createTemplate(savedUser); var savedTemplate = templateRepository.save(template); var questions = List.of("변경된 질문1", "변경된..
· BE/Java
상황 프로젝트에서 API를 개발하는 과정에서 통합테스트를 작성했고 로컬에서 테이트 코드가 성공적으로 동작하는것까지 확인했다. 이후 개발 내용을 깃허브에 Pull Request 를 날렸다. 분명 로컬에서는 전체 테스트가 성공적인걸 확인했지만 Github Actions CI과정에서는 실패했다.. @DisplayName("템플릿 식별자를 통해 템플릿을 상세조회한다.") @Test void getDetailTemplateTest() { var user = UserFixtures.createUser(); var savedUser = userRepository.save(user); var template = createTemplate(savedUser); var savedTemplate = templateRepos..
· BE
SSL/TLS SSL(Secure Sockets Layer) 및 TLS(Transport Layer Security)는 통신 세션의 데이터를 암호화하여 인터넷을 통한 통신이 보안되게 하는 프로토콜 SSL 여러 버전의 SSL이 발표되었고, SSL 3.0이 마지막 버전 Netscape에 의해 1990년대 초에 개발 TLS SSL 3.0을 기반으로 IETF에 의해 개발되었고, 사실상 SSL의 후속 버전 SSL에 비해 보안 강화 및 다양한 향상 사항이 포함 정리 SSL과 TLS는 주로 HTTPS(보안 HTTP) 연결에서 사용되며, 이를 통해 웹 사이트와 사용자 간의 데이터가 보안되게 전송 현재 모든 SSL 인증서가 더 이상 사용되지 않습니다. TLS 인증서가 업계 표준 사용하는 이유 HTTP 프로토콜의 취약점 ..
· BE/Spring
문제 상황 PostService에서 사용하는 PostRepository(Jpa)에 직접 의존을 하고 있었고 이런 구조는 상위모듈이 하위모듈에 직접 의존하는 관계라고 생각해서 DIP을 사용해 자주 변하는것과 변하지 않는것을 구분하는 설계로 변경했다. 하지만 그 뒤에 정상적으로 동작하던 테스트가 깨져버렸다.. 적용된 Repository // PostRepository는 도메인 Repository @Repository @RequiredArgsConstructor public class PostRepositoryAdapter implements PostRepository { private final PostJpaRepository postJpaRepository; @Override public Post save..
팀원에게 슬랙으로 질문을 받았고 나도 잘 모르는 상황이라 그냥 Merge하시라고 답변드렸지만 이후에 커밋 로그에 Conflict Commit이 여러 개 생겨나는 부분이 Commint log가 지저분해 진다고 생각해 한번 상황을 재현하면서 해결 방법을 찾아봤습니다. Git을 사용하면서 rebase를 한 후 push가 reject되는 문제에 부딪힐 때가 있습니다. 이 문제는 주로 원격 저장소와 로컬 저장소의 브랜치 히스토리가 일치하지 않을 때 발생합니다. 이 포스트에서는 이 문제를 해결하는 세 가지 방법을 소개합니다. 문제 상황 main 브랜치에서 feat 브랜치를 checkout하여 작업을 진행합니다. 작업 중 main 브랜치에 추가 커밋이 발생합니다. feat 브랜치에서 git rebase main을 실..
· BE/Spring
문제 상황 레디스를 사용하는 테스트코드에서 임베디드 레디스가 아닌 테스트컨테이너를 선택했습니다. 전체 테스트를 실행했을 때 레디스 컨테이너에 연결이 실패하는 현상이 발생하고 있습니다. 현재 레디스와 레디스 테스트 컨테이너의 설정입니다. // 프로덕션 코드에서 RedisTemplate Bean 등록 @Configuration @EnableRedisRepositories public class RedisConfig { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate redisTemplate = new RedisTemplate(); redisTemplate.setConnec..
· BE/Spring
@SpringBootApplication 에는 대표적으로 3개에 어노테이션이 붙어 있습니다. @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interface SpringBootApplication { @SpringBootConfiguration 어노테이션 @Target(ElementType.TYPE) @Retenti..
E@st
학습 기록