자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
그리고 파일들을 보니까 다 빨간색으로 변해있더라고요 언제부터 변했는지는 모르겠어요. 우선 git 명령어 치기 전까지는 괜찮았어요 오류를 찾아보니까 해당 파일에 .git 파일을 지우고 다시 하라고 했던 것 같은데 그런 파일은 없더라고요 오류에 대해 잘못 찾았나 봐요 ㅎㅎ; ------------------- .git 폴더는 다시 보니까 숨긴 항목으로 숨겨져 있었네요.. .git 폴더 지우고 다시 처음부터 했더니 이상 없습니다!
강의 내용을 최대한 놓치지 않고 다 작성한 것 같은데 포스트맨에 나오는 내용이 다릅니다.. [22:12:33.504][WARN ][org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.logException:line207] - Resolved [jakarta.validation.ConstraintDefinitionException: HV000243: Constraint ConSilkTea.SmallRecordServer.common.annotation.ValidEnum references constraint validator type ConSilkTea.SmallRecordServer.core.annotation.ValidEnumValidator, but this validator is defined for constraint type ConSilkTea.SmallRecordServer.core.annotation.ValidEnum.] 이건 로그에 나온겁니다.. 전에 했던 블로그 api랑 충돌이 일어나는 것 같은데 서버 하나당 api는 1개 밖에 사용을 못할까요? 다중으로 사용하고 싶다면 어떻게 변경을 하면 좋을지 몰라 질문 남깁니다
안녕하세요, 강의 너무 잘 보고있습니다. `JwtTokenProvider.kt` 생성 중, 궁금한 것이 있어 질문 남깁니다. createToken에서 signWith에 사용하는 key를 private val key by lazy { Keys.hmacShaKeyFor(Decoders.BASE64.decode(secret)) } yml파일에 쓴 key 그대로 사용하는 것이 아닌, 아래와 같이 한번 더 decode를 거치는 것으로 보여지는데요. signwith를 통해 또 다시 HS256으로 인코딩 하는데, 그 전에 한번 더 디코딩한 키를 넣는 이유가 궁금합니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. remember-me 인증이 토큰 기반 인증을 사용해 유효성을 검사한다고 하셨는데, 토큰 기반 인증은 statelesss한 방식 알고있습니다. remember-me 인증은 세션을 이용한 서버 기반 인증 방식으로 사용자 상태를 저장하고, 토큰 기반 인증 방식은 그 반대라고 생각되는데, 강사님은 토큰 기반 인증 방식을 좀 더 넓은 범위로 보신건지 궁금합니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 강의에서는 setter를 사용하지 않고 하는게 바람직하다고 언급하신적이 있습니다. public static OrderItem createOrderItem(Item item,int orderPrice,int count){ OrderItem orderItem=new OrderItem(); orderItem.setItem(item); orderItem.setOrderPrice(orderPrice); orderItem.setCount(count); item.removeStock(count); return orderItem; } 이것은 영한님 강의의 OrderItem이라는 중간테이블을 생성해주는 것이였습니다. 위에서 set,set,set 이 많이 나오는데 이게 아마 builer패턴? 으로 위 코드에서 setter를 지워주는것 맞져?? 그러면 Order의 연관관계 편의 메서드인 아래 코드는 또 어떻게 바꿔야 할까 public void addOrderItem(OrderItem orderItem){ orderItem.setOrder(this); this.orderItems.add(orderItem); } 이거는 또 어떻게 바꿔야 할까요?? 실무에서는 이런 것까지도 set을 안쓰나요? 아니면 뭐set 대신 이름만 inItOrder로 바꿔야 하는 것인가요? 질문 2) 솔직히 set을 왜 안써야 하는지 감이 안옵니다. 다른 개발자가 무작정 set을 호출할수 있다는게 단점이라고 하신 것 같은데 그러면 뭐 cancelOrder 이런 메서드로 바꾸면 다른 개발자가 이걸 호출할수도 있지 않나요?? 질문 3) 가끔 보면 이런 코드가 있습니다. public void initPost(Post post) { if(this.post == null) this.post = post; } 이것은 init 이기때문에 단순히 null 인지 체크해주는 것인가요?? 가끔 이렇게 매개변수들어온게 null 인지 체크하는 로직이 들어있는게 있더라고요!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 페치 조인 질문있습니다! - 인프런 | 질문 & 답변 (inflearn.com) 이것을 작성했었던 글쓴이인데 아직 이해가 덜되어서 질문합니다! 제 질문과 영한님의 답변을 요약하면 제 질문은 1대 다 에서는 fetch join을 고려하고 다대1에서 batch size를 이용해서 최적화하는게 좋았는데 다대1에서 그러면 역으로 1대다기준으로 fetch join 쓰면 안되냐는게 질문이였고 그에 대한 영한님의 답변은 다쪽(위에 질문에서는 중간테이블) 을 기준으로 조회하기 어려운 경우가 있는데 그 경우는 1쪽기준으로 페이징을 한다면 다쪽에서 페이징이 모호하다. 라는 것이였습니다.(제가 제대로 이해한 것 맞겠죠?) @Query("select pc from Person_Club pc join fetch pc.club where pc.person.id=:personId ORDER BY pc.club.name DESC") List<Person_Club> findTop5ByPersonIdOrderByClubName(@Param("personId") Long personId,Pageable pageable); 위 코드는 정확히 기억이 안나는데 Person_Club은 person과 Club의 다대다 중간테이블로 만들었고 where 절 로 persinID를 받아서 범위를 제한하고 페이징을 했던걸로 기억하는데 이런 경우는 1쪽기준으로 페이징을 한다면(where 절로 범위 제한) 다쪽에서 페이징이 모호해지지 않지 않나요?? 부족한 설명죄송합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 비슷하지만 없는 것 같습니다. 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 강의 극 초반인데 h2 데이터베이스 문제로 시작도 못 하구 있습니다. ㅠㅜ 영한쌤과 같은 버전으로 하려고 했는데 start.spring.io 에서는 2.2.1이 안되더라구요ㅠㅜ 그래서 3.xx 버전을 사용하고 있습니다. 따라서 h2데이터베이스도 2.1xx 버전을 깔았습니다. 근데 자꾸 h2연결이 안되어서 run도 안되고 데이터베이스 연결도 안 되더라구요ㅠㅜ db이름도 datajpa, data-jpa 등등 바꿔서도 해보고 이름도 바꿔서도 해보고 해도 안되네요. 그리고 db파일은 생성이 원래 되었었는데, 지금 현재 안되서 프로젝트와 db파일을 지우고 첨부터 다시 해보고를 반복하면서 지웠었는데, 이제는 아예 생성이 안되더라구요...ㅎㅎ 어떻게 해야할까요>?ㅠㅜ h2연결이 안되서 강의 진도를 못 나가고 있습니다. h2데이터베이스는 어떻게 생성을 하는건가요? 그냥 yml설정해주고 빌드를 하고 h2 console에 연결 하면 생기는 건가요? 아니면 생긴걸 확인하고 console로 들어가는건가요? 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 영속상태라는 것은 영속성 컨텍스트에 들어가는 것으로 명확한데, 준영속 상태는 뭐 그런 꼬리표 같은게 붙는 건가요? 아니면 엔티티긴 한데 생성되고 영속성 컨텍스트에 없는 상태를 그냥 추상적으로 준영속상태라고 부르는 건가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 김영한 선생님의 JPA 활용 1편에 웹 계층 개발에 회원등록 강의에서 4:30 쯤에서 회원가입 버튼을 누르는데 선생님은 잘 뜨시는데 저는 계속 에러페이지가 떠서 글을 작성합니다. 뭐가 문제일까요,,, 제코드 링크 올립니다. https://drive.google.com/file/d/1QGBdGAs1z2ZxfsM-PdYAeaD2rH7nptms/view?usp=sharing
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니오 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. getTotalPrice 부분에서 가격과 개수를 이용해 곱하기를 해 종합 가격을 반환해주는데 만약 가격이 정수가 아닌 실수인 경우 소수점이 나올 텐데 이런거는 어떻게 처리하나요? 단순히 반올림하거나 잘라버리지는 않을거 같은데