1분 42초에 lock을 건다고 하는데 이게 어떤 lock을 건다는 의미인지 모르겠습니다. 설명해주시기로는 범위로 락을 잡고 처음에 쿠폰 발급 여부를 가져와서 판단하는 방식입니다.라고 설명해주셨는데 여기서 lock이란게 뭐고 lock을 사용하는 이유가 뭔지 설명해주시면 감사하겠습니다. if문을 통해 확인한다는게 lock인건지 아니면 apply메서드 자체에 lock을 걸고 다른 프로세스가 접근하지 못하게한다는건지 모르겠내요 유저 아이디별로 쿠폰 발급 개수를 한개로 제한할때 Redis에 Set자료구조를 써도되고 Map을 써도될거같은데 Set을 소개해주신 이유가 있을까요?
public void login(Account account) { System.out.println(account); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(account.getNickname(), account.getPassword(), Collections.singleton(new SimpleGrantedAuthority("ROLE_USER"))); SecurityContextHolder.getContext().setAuthentication(token); } 우선 AccountService에 있는 login입니다. 제가 테스트를 하던 도중 나머지는 다 되는데 authetication부분에서 문제가 있는것을 발견했습니다. 단위테스트로 하다보니 권한이 부여가 되지 않아서 회원가입을 해도 다시 원상태로 복구되더군요 springsecurity6로 바뀌면서 새로 바뀐부분이 있길래 구글링해서 바꿀만큼 바꿔보고 찾을만큼 찾아봤다 생각했는데도 자꾸 권한부여 부분에서 문제가 생깁니다(위의 login함수) 이럴경우 어떻게 바꾸어야 할까요...? 저 위에 SecurityContextHolder.getContext().setAuthentication(token); 라는 코드전에 토큰을 출력해 보니 UsernamePasswordAuthenticationToken [Principal=jungsik, Credentials=[PROTECTED], Authenticated=true, Details=null, Granted Authorities=[ROLE_USER]] 이렇듯 AUtheticated는 true로 반환되는데 redirect될때는 권한이 사라지는것 같습니다
/* 등록 */ public void savePosts(Posts posts) { postsRepository.save(posts); /* 업데이트 */ public void doUpdate(Posts posts) { postsRepository.save(posts); 구글링을 해보니 JPA의 save를 사용했을시 기존에 DB에 데이터가있을땐 바뀌는 부분만 업데이트 된다해서 이렇게 코딩을 했습니다. 하지만 수정기능을 동작해보니 기존 데이터가 수정되지 않고 새로운 데이터로 DB에 추가가 되고있습니다. 무언가 다른 방법이 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 예전에 프로젝트를 할때 jpa에 있는 sql문을 통해서 update문으로 수정을 했는데 병합이랑 변경감지를 구지 쓰는 이유가 있을까요?
여기까진 값이 잘 전달이 되었는데 왜 넘어가지 않을까요 ... 이런 에러가 발생하는데 아무리 봐도 리다이렉트는 한번밖에 안한거같지 말입니다 ㅜ customAuthenticationFailureHandler입니다 실행결과 입니다 url을 직접 입력할 땐 메세지가 잘 나옵니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 테스트 케이스 작성하고 처음으로 실행해볼 때 실행하니까 HashMap에서 에러가 발생하는데 어느 부분이 문제인지 잘 모르겠습니다
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@GetMapping("/add") public int addTwoNumbers(CalculatorAddRequest request) { return request.getNumber1() + request.getNumber2(); } @PostMapping("/multiply") public int multiplyTwoNumbers(@RequestBody CalculatorMultiplyRequest request) { return request.getNumber1() * request.getNumber2(); } GetMapping 메소드에서는 @RequestParm 어노테이션을 사용하지 않아도 자동으로 쿼리 데이터를 DTO로 변환해주고 PostMapping 메소드에서는 @RequestBody 어노테이션을 사용해야만 Body 데이터를 DTO로 변환해주는 것인가요?
안녕하세요. 강의 잘 듣고있습니다 ! 카프카 컨슈머가 쿠폰레포지토리에 save하는 과정에서 모종의 이유로 실패하여 롤백 되었을 때, 레디스에서는 이미 increment가 되었는데 이걸 하나 빼줘야되는거 아닌가요? 이런 처리는 어떻게하는지 궁금합니다 ! 추가) 뒤에 얘기가 나오는군요 ㅎㅎㅎ.. FailedEvent를 저장하는 것도 실패하였다면, 배치프로그램이 제 역할을 못할 것 같은데요.. ! 그렇다면 로그를 보고 판단해야할 것 같은데 실무에서도 그렇게 진행이 될까요 ? 그리고, FailedEvent를 삽입하는 것에서도 에러가 발생할 수 있기 때문에 또 try catch로 묶어서 이것 마저 실패할 경우에도 로그를 따로 남겨야하는지 궁금합니다 !
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
안녕하세요, 궁금한 게 있어 질문드립니다! 현재 강의까지 그래들에 3개의 디펜던시를 추가해주었는데요, 기존 자바-스프링부트 환경에서는 디펜던시에 라이브러리 버전을 명시하지 않아도 스프링부트가 내부적으로 호환되는 버전을 찾아 사용하는 것으로 알고 있습니다. 반면, 코틀린-스프링부트에서 디펜던시를 사용할 때 세 경우 모두 버전까지 명시해 사용했는데요, 혹시 코틀린을 사용할 땐 매번 이렇게 최신의 안정화된 버전을 찾아 사용해야 하는 것인지 궁금합니다. 또한 검색해보니 groovy gradle 대신 사용하는 kotlin-dsl이라는 것도 봤는데요, 혹시 고급편에 이 내용이 포함되어 있을지도 궁금합니다. 항상 정성들인 답변 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] json으로 return 할 때 궁금한 점이 있어서 질문드립니다. 이전 강의에서 member 엔티티 자체를 json 타입으로 return 할 때는 orders(컬렉션)에 대해 무한루프가 걸리지 않았지만 order를 json 타입으로 return하게 되면 강의에서 처럼 여러 엔티티들에 의해 무한루프가 걸리게 됩니다. 컬렉션인 데이터의 경우 무한루프에 걸리지 않는 이유가 무엇인가요??
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 처음에 선생님이 환경설정 하신다고 JpashopApplication에 아래와 같은 코드 만들어놓고 메인메서드 실행하셨는데 저는 그럴때마다 Process 'jpashop [:JpashopApplication.main()]' Is Running 'jpashop [:JpashopApplication.main()]' is not allowed to run in parallel. Would you like to stop the running one? 이런 메세지 뜨면서 새로 실행이 되는데 선생님께선 Do not show this dialog in the future 체크해놓고 매 실행시마다 새로 실행이 되는게 맞는걸까요? Hello hello = new Hello(); hello.setData("hello"); String data = hello.getData(); System.out.println("data = " + data);
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
선생님 안녕하세요. 거의 다 완강하고 나서 문득 든 생각이 있습니다. 저희 도서 관리 프로젝트에서 controller를 안쓰고 restcontroller을 사용한 이유가 궁금합니다 일단 제가 구글링을 해보았을때, controller은 반환 값이 string이면 뷰를 찾고 렌더링 한다고 나와있으며 restcontroller은 @Requestbody + @controller이며 뷰를 찾는게 아니라 http메세지 바디에 바로 입력한다고 찾아보았습니다. 저는 프론트엔드에게 데이터를 주려면 모델에 담아서 보내야 하는 것으로 이해하고 있는데 그러면 controller을 쓰는 것이 맞지 않나 의문점이 들었습니다. 여기서 더 해답을 찾지 못하겠어서 질문글을 남겼습니다. 감사합[니다.