Spring/Java 18

[JUnit] 통합테스트 설정 분리

각 컨트롤러마다 통합 테스트를 작성하는데 설정파일의 변동은 거의 없어서 테스트의 설정을 모아두는 클래스를 만들기로 했습니다.@SpringBootTest@AutoConfigureMockMvc@ActiveProfiles("test")@Import({DataInitializer.class,TestRepository.class})@Transactionalpublic class BaseIntegrationTest { protected final ObjectMapper mapper = new ObjectMapper(); @Autowired protected MockMvc mockMvc; @Autowired protected TestRepository testRepository;}기본 통합 테스트의 설정..

Spring/Java 2024.07.01

[Spring] Firebase IdToken을 사용한 Authencation

Spring에서는 JWT, OAuth2 등을 사용하여 인증, 인가 및 회원가입, 로그인을 구현할 수 있습니다.id, password를 사용 후 session, jwt등을 사용하여 로그인을 유지할 수 있고 OAuth2를 사용해 인증, 인가 후 마찬가지로 session, jwt등을 사용해 로그인을 유지할 수도 있습니다. ​그리고 오늘은 앱 개발 프로젝트를 진행하며 Flutter, fireabase Authencation를 사용하여 소셜 로그인을 진행 후 받은 idToken을 사용하여 인증, 인가 진행하겠습니다.​먼저 소셜 로그인 로직은 프론트, 앱 개발자들이 구현하여 생략하겠습니다.먼저 개발용으로 소셜 로그인을 사용하여 로그인을 하면 긴 문자열을 반환받습니다. 해당 문자열이 idToken입니다.@Config..

Spring/Java 2024.06.27

[Spring] Custom Validation

Enum를 사용하여 enum에서 특정 값은 post 요청 시 사용되는 안되는 값이 있어서 해당 값으로 post 요청이 들어오면 예외처리를 하는 custom validation을 구현했습니다.@Getter@RequiredArgsConstructorpublic enum TransactionAction { TOTAL("TOTAL","전체"), GIVING("GIVING", "준"), RECEIVING("RECEIVING", "받은"); private final String key; private final String title;}여기서 TOTAL을 예외처리 할 겁니다!@Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@..

Spring/Java 2024.06.27

[Spring] entity에 enum field 설정방법

@Getter@RequiredArgsConstructorpublic enum HashtagType { JOB_OBJECTIVE("JOB_OBJECTIVE","희망업무"), MBTI("MBIT", "MBTI"), SPECIALTY("SPECIALTY", "특기"), PERSONALITY("PERSONALITY", "성격"), ETC("ETC", "기타"); private final String key; private final String title;}다음과 같이 클래스에 필요한 값들을 작성한 뒤 어노테이션을 사용하여 생성자, getter의 작성을 줄여 더 깔끔하고 가독성 높은 코드를 작성할 수 있습니다.​그리고 테이블에 다음과 같은 값들을 저장하고 싶은 경우publi..

Spring/Java 2024.06.27

[Spring] jmeter를 사용한 성능 테스트

기능 구현 및 테스트 코드 구현 후 성능 개선에 대한 욕심이 생겼습니다. 쿼리 튜닝이나 redis 도입을 통한 성능개선 전 현재 프로젝트의 성능이 궁금해졌습니다. 그래서 spring에서 자주 사용하는 테스트 툴 2개(jmeter, nGrinder) 중 jmeter를 사용해 진행하겠습니다.이유는 jmeter가 설치가 비교적 간단하기 때문입니다 :)mac sonoma사용 시 에러가 발생할 수 있는데 해결방법은https://blog.naver.com/klaus9267/223388607476 mac sonoma에서의 jmeter 오류현재 os update를 통해 sonoma OS를 사용하는데 m1 이후의 방법으로는 오류가 발생하며 jmeter가 실행되...blog.naver.com여기를 참고하시면됩니다 :)사용..

Spring/Java 2024.06.09

[Spring] test repository 생성

테스트를 진행하다 보면 초기 데이터 삽입 후, 필요에 따라 추가적인 데이터 삽입이 필요할 때가 있습니다. 예를 들어, 1:1 관계에서 초기 데이터를 삽입하면 create API 테스트를 하기 전에 delete를 먼저 보내야 하거나, 더 복잡한 로직의 경우 차라리 나중에 데이터를 삽입하는 것이 더 편할 수도 있습니다.이를 위해 TestRepository를 작성하여, 데이터 삽입이 필요할 경우 saveEntity와 같은 메서드를 호출해 필요한 데이터들을 삽입하기로 했습니다.@TestConfigurationpublic class TestRepository { @Autowired ProjectRepository projectRepository; public Project saveProject() { ..

Spring/Java 2024.06.05

[spring] 통합테스트

기능 개발 후 에러 발견 및 변경에 대비하기 위해 통합 테스트를 진행했습니다. 단위 테스트를 진행하며 개발을 했으면 더 좋았겠지만 개발 후 테스트를 진행하는 것이니 통합테스트로 방향을 잡았습니다.  DataInitializer @TestConfiguration@RequiredArgsConstructorpublic class DataInitializer { private final UserRepository userRepository; private final ProjectRepository projectRepository; private final BlackListRepository blackListRepository; public static User testUser; List users = ..

Spring/Java 2024.06.03