Spring boot (21) 썸네일형 리스트형 Jmeter 꿀팁 이런식으로 HTTP Header Manager에 원하는 값을 넣어서 request의 헤더값을 지정 할 수 있다.내가 하던 프로젝트에서는 Jwt 로 유저를 구별하는데, 원하던 테스트는 1000명의 유저가 동시에 접근하는거다. 그렇다면 Header의 Authorization항목에 토큰값을 1000개를 준비해야 한다. 그걸 일일이 다 쓰는건 말이 안된다.몇 개 안될 때는 이런식으로 넣어 줄 수 있겠지만.... 그렇기에 있는 것이 JSR223 PreProcessor이다!! 이런 식으로 작성해준다면 요청을 보내기 전 User Defined Variables에 원하는 key, value를 넣어 준다. 참고로 ${__evalVar(token${__threadNum})} 위의 Http Header Manager에.. Jmeter 사용법!! (Mac OS brew로 설치) brew install jmeter우선 MacOS에서 터미널에 위와 같은 명령어를 넣어주면 brew가 알아서 Jmeter를 설치해준다. open /opt/homebrew/bin/Jmeter위 명령어를 입력시 아래와 같이 Jmeter가 켜진다 테스트 플랜의 Thread Group을 설정해주면 된다 Number of Threads : 스레드 개수 , 즉 유저의 수이다.Loop Count : 몇 번 반복 할지나는 멀티 스레드 환경에서 동시성 테스트를 할 것이기 때문에 Thread개수는 4로 해주었다. Thread Group오른쪽 클릭, Add -> Sampler -> HTTP Request로 Http 요청을 작성해준다 Thread Group에서 오른쪽 클릭, Listener 에서 원하는 결과를 볼 수.. Spring 인터페이스의 구현체가 여러 개일 때 package newCar.event_page.jwt;import newCar.event_page.model.entity.Team;public interface JwtTokenProvider { public String generateToken(String username, boolean isAdmin); public Long getUserId(String token); //토큰에서 유저 Id를 추출 public Team getTeam(String token); //토큰에서 유저 Team을 추출 public boolean validateToken(String token); //JWT 토큰 유효성 검증 public boolean validateAdminToken(String to.. JWT 이란? JWT이란 JSON Web Token의 약자로 주로 로그인 할 때 서버에서 생성해서 유저에게 발급해준다.또한 웹에서 정보를 안전하게 전달하기 위한 열려있는 표준이다.JWT는 JSON 형식으로 구성되어 있으며, 클레임(claim)이라는 속성을 사용하여 필요한 정보를 포함하고 서명(signature)을 통해 인증과 데이터 무결성을 보장하며, 주로 인증(Authentication)과 정보 교환을 위해 사용된다. JWT는 기본적으로 세 부분으로 구성된다 HeaderPayloadSignature생선된 토큰은....서버는 생성된 JWT 토큰을 클라이언트에 응답으로 반환합니다.이때 토큰을 응답 헤더에 담아서 반환하거나, 응답 바디(JSON)에 담아 반환할 수 있습니다.일반적으로 HTTP 응답 헤더에 Authoriz.. RedisTemplate.opsForValue().decremet() 이전 포스팅에서 명시적으로 락을 걸어주고 MySQL락과 성능 테스트를 했는데 별 차이가 안났엇다. 이전 포스팅 : https://red-tiger.tistory.com/118 Spring Redis 분산 락 사용법우선 Redis의 고급 기능 들을 지원해주는 Redisson 클라이언트 종속성을 build.gradle에 넣어준다 당연한 얘기지만 로컬환경에 redis를 미리 다운 받아 놔야한다.macOS에서는 brew 로 쉽게 설치가 가능하다red-tiger.tistory.com 그런데 알고보니 해당 key에 해당하는 value를 별도의 락 없이(정확히 얘기하면 redis 자체가 원자적으로 작동한다) value를 줄여주는 메소드를 발견했다. public void decreaseValueWithLock(Str.. Spring Redis 분산 락 사용법 우선 Redis의 고급 기능 들을 지원해주는 Redisson 클라이언트 종속성을 build.gradle에 넣어준다 당연한 얘기지만 로컬환경에 redis를 미리 다운 받아 놔야한다.macOS에서는 brew 로 쉽게 설치가 가능하다. build.gradledependecies{ //... implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.redisson:redisson-spring-boot-starter:3.17.0'} 나는 선착순 티켓팅에서 동시성 문제를 해결하기 위해 분산 락을 걸어줄 것이다!! 아래와 같이 작성한다. package softeer.demo.config;import or.. Spring Data JPA Illegal attempt to set lock mode for a native query Illegal attempt to set lock mode for a native query라는 예외가 발생하고 있습니다. 이는 Spring Data JPA에서 Native Query에 비관적 락을 적용할 수 없다는 의미입니다. 비관적 락을 사용하려면 JPQL을 사용해야 합니다.다음과 같이 @Query 어노테이션을 JPQL로 변경해 보세요TicketRepository 수정@Repository public interface TicketRepository extends JpaRepository { @Lock(LockModeType.PESSIMISTIC_WRITE) @Query("SELECT t FROM Ticket t WHERE t.id = :id") Optional findByIdWithLock(@P.. Spring 끄적끄적(5) @Transactional , Stream @Transactional ( readOnly = true) 쓰면 장점@Transactional(readOnly = true)이 어노테이션이 붙은 메소드는 조회용 메소드라고 명시적으로 나타내주며 코드의 가독성을 높여준다JPA의 영속성 컨텍스트(Persistence Context)는 Entity 조회 시 초기 상태에 대한 Snapshot을 저장한다하지만 위 어노테이션을 붙여주면 JPA는 해당 트랜잭션 내에서 조회하는 Entity는 조회용임을 인지하고 변경 감지를 위한 Snapshot을 따로 보관하지 않으므로 메모리가 절약되는 성능상 이점이 있다List 를 Stream으로 작성해야 하는이유public List getPersonalityList() { List list = personalityT.. 이전 1 2 3 다음