inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

DTO 관련하여 질문드립니다.

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

강의에서 DTO의 위치는 최종 호출자가 소유자라고 말씀주셨는데요, 그렇다면 웹 컨트롤러에서 requestDTO가 서비스의 파라미터로 넘어간다면 requestDTO가 웹 관심사임에도 불구하고 서비스 계층에 두시는지, 그게 아니라면 계층 간의 경계에서 데이터를 주고받을 때 어떤 방식을 선호하시는지 궁금합니다!

  • spring
니나니노 댓글 1 좋아요 1 조회수 603

Spring Authorization Server 1.0 관련

해결됨

스프링 시큐리티 OAuth2

https://spring.io/projects/spring-authorization-server Spring Authorization Server 1.0이 정식으로 출시되었고 강의는 만들어진 시간으로 보아 0.31 기반인거 같은데 1.0(0.4)에 대한 보강 계획은 있으신지요?

  • spring-boot
  • java
  • oauth
  • spring
신석균 댓글 1 좋아요 1 조회수 368

@BatchSize의 조회 대상 우선순위(?)

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

[질문 내용] 안녕하세요 강의 너무 잘 듣고 있습니다. @BatchSize에 관해서 의문점이 생겨서 질문을 드리게 되었습니다. @BatchSize를 사용하면 특정 Entity에서 조회 쿼리가 필요한 필드를 초기화 할 때, 1차 캐시로부터 같은 종류의 Entity id값을 @BatchSize에 지정한 size값만큼 가져와 IN에 넣어서 필요한 데이터를 함께 조회하고 초기화하는 것으로 이해했습니다. 근데, 이 때 단순히 1차 캐시에서 랜덤으로 id값을 가져와서 IN에 넣으면 원하지 않는 Entity에 초기화가 잘못 이뤄질 수 있지 않을까 하는 의문이 있었지만, 당연하게도 이런 부분에 대해서는 알아서 최적화를 해 둔 것 같았습니다. 예를 들면 JPQL의 결과로 조회된 Entity컬렉션 내부에서 하나를 집어 Entity 필드를 지연 로딩 초기화할 경우 같은 컬렉션 내부의 Entity들이 우선순위를 갖고 함께 초기화되는 것 같았습니다. 하지만 이것이 정확히 어떤 원리로 동작하는 지는 알 수가 없었습니다..ㅠㅠ JPQL로 조회한 컬렉션에 대해서 따로 영속성 컨텍스트가 참조하고 있다거나 하는 식으로 동작하는 것일까요? 이런 원리를 모르다 보니 @BatchSize가 IN에 넣을 Entity를 결정하는 우선순위를 알 수가 없었습니다. @BatchSize의 size값이 JPQL로 조회한 컬렉션의 size보다 클 때에는 1차 캐시에서 부족한 만큼의 Entity id를 더 끌어와서 IN에 추가하는데, 이 때 함께 초기화될 Entity가 어떤 Entity일 지 예측이 안 됩니다. 이런 것들도 우선순위가 따로 존재하나요? 크게 중요한 내용은 아닌 것 같은데, 그냥 같은 컬렉션에 있는 Entity들이 IN의 우선순위가 된다고 이해하고 사용하는 정도면 문제가 없을 지 궁금합니다..!

  • spring-boot
  • JPA
  • java
  • spring
공부용 댓글 1 좋아요 0 조회수 372

궁금한 게 있는데요.

해결됨

스프링 핵심 원리 - 기본편

후반부에 좀 이해가 안 가는 게 있어서 복습 겸 앞부분 보고 있습니다. 그런데 분명 멤버 리포지토리와 멤버 서비스의 저장요소는 결국 save와 join이 담당을 하게 되는 건데, 굳이 이름을 join이라고 한 이유가 있나요? 사실 save라고 해도 잘 동작을 하는데, 굳이 이름을 join으로 바꿔서 한 이유가 무엇인가요? 사실 초반에 그것때문에 굉장히 햇갈렸거든요. 이제 와서 궁금증이 생겨서 질문드립니다.

  • oop
  • spring
코딩이재미있어! 댓글 1 좋아요 1 조회수 473

OAuth2 로그인 구현 - Authorization Code 요청하기 - OAuth2AuthorizationRequest 객체 세션 저장 문제

미해결

스프링 시큐리티 OAuth2

안녕하세요! 좋은 강의 너무 감사드립니다! 한가지 질문 드릴께 있습니다. OAuth2 로그인 구현 - Authorization Code 요청하기 26:25분 내용을 보면 첫번째 인증 단계! (response type = code) OAuth2AuthorizationRequest 객체 담아서 인가 서버 (keyclack 서버) 에 전달 하게 되는데요 이것과 동시에 OAuth2AuthorizationRequest 객체를 sesstion 에 저장을 하게 됩니다. 그러면 사용자는 인가 서버 (keyclack 서버) 로그인을 성공적으로 해결된다면 미리 지정된 redirect url 통해 Authorization Code 값을 전달해주는데요! 그런 후 미리 OAuth2AuthorizationRequest 객체를 sesstion 저장된것을 가져오는데 만약 해당 서버가 1개 라서 다행이지만 scale out 경우 그러니깐 서버가 2대 이상이라면 맨처음 OAuth2AuthorizationRequest 객체 저장할때가 1번 서버라면 OAuth2AuthorizationRequest 객체를 가져올때가 2번 서버라면 이때 각각 다른 서버이기 때문에 가져오지 못하는 문제가 발생되지 않나요? 이때는 어떻게 해결해야 할까요??.. OAuth2AuthorizationRequest 객체를 외부 세션 서버로 저장 할수 있도록 다시 로직을 재구현 해야 하는걸까요?

  • spring
  • oauth
  • spring-boot
  • java
리나 댓글 1 좋아요 1 조회수 918

css 경로 못 찾는 문제

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요 질문 게시판에 css 키워드로 검색해서 질문글을 다 살펴봤는데 해결을 못해서 질문 드립니다. 강의에서 resource/static/item.html resource/static/items.html 이 두 파일을 복사해서 resources/templates/basic 경로 안에 넣은 후에 thymeleaf 템플릿으로 수정 작업을 완료하고 이후에 templates/basic 경로에 있는 html 파일을 absolute path를 복사해서 브라우저에 띄워봅니다. 영한님에게는 css bootstrap이 적용된 html 화면이 나오는데 저는 나오질 않아서 봤더니 link 태그 href 속성에 Cannot resolve directory 'css' Cannot resolve file 'bootstrap.min.css' 요런식으로 경고 메세지가 뜹니다. link href="../../static/css/bootstrap.min.css" link href="/css/bootstrap.min.css" 이렇게 수정하면 경고문구는 사라지지만 여전히 css bootstrap이 적용된 html 화면은 나오지 않습니다. 무엇이 문제인지 잘 모르겠습니다

  • spring
  • MVC
정민교 댓글 1 좋아요 0 조회수 676

어떤 객체를 스프링 빈으로 등록해야하는지 잘 모르겠어요.

해결됨

스프링 핵심 원리 - 기본편

서포터님 안녕하세요! 항상 자세히 답변해주셔서 감사합니다! 강의를 듣다가 문득 이런 의문점이 들었습니다. '어떤 객체를 스프링 빈으로 등록해야하는가?' '어떤 객체를 스프링 빈으로 등록하지 말아야 하는가? 일단, 강의에서 배웠듯 싱글톤이면 안되는 클래스(상태를 갖는 클래스)는 당연히 스프링 빈으로 등록해서는 안 된다고 생각합니다. 혹시 이 외에 스프링 빈으로 등록하지 않아야 하는 객체가 있을까요? 또, '이것만큼은 반드시 스프링 빈으로 관리해야한다'라는게 있는 지 궁금합니다! 서포터님 의견은 어떠신가요?

  • spring
  • oop
동해물과백두산이마르고닳도록 댓글 1 좋아요 0 조회수 376

포폴 데이터모델링, jpa설계하다가 질문 !!

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요?? 김영한님 JPA강의 덕에 포폴 순항하고 있습니다. 항상 좋은 강의 감사한 마음을 가지고 있습니다. 파이팅하세요 !! 궁금한점을.... 간단하게 설명하려고 노력하겠습니다 !! 예를들어서 블로그 포스팅 domain을 아래와 같이 만들었습니다... id: ~~~~ content: ~~~~ tags: ~~~ (일대다 관계) comments: ~~~(일대다 관계) 그런데 !!! 여기서 궁금한점 !! 제 생각으로는... 아 그냥 편하게 포스팅한번에 끌고와서(tags, comments) 응답해주고 싶은뎅... 그런데 영한님께서는 이 강의에서 일대다 관계를 두번이상하면 안된다고 하셔서...ㄷㄷ;;;; 그래서, 오랜 고민끝에 포스팅 (id,content,tags)를 응답해주고 comments는 다대일 방법으로 응답을 해줬거든요??.... (이게 옳은방법일까...ㄷㄷ;;) 그러니까 요청을 두번 보내는거에요.. 포스팅 한번... 포스팅에 연관관계있는 comments 한번.. 저의 이러한 판단과 설계과 괜찮은 걸까요?? 질문드리고 싶습니다 !! (잘 이해하셨을라나...ㄷㄷ;ㅠㅠ)

  • jpa
  • spring-boot
  • 데이터모델링
  • spring
  • 일대다
  • JPA
  • java
댓글 1 좋아요 1 조회수 379

userinfo 요청 시 403에러

미해결

스프링 시큐리티 OAuth2

http://localhost:8080/realms/oauth2/protocol/openid-connect/userinfo 포스트맨 요청 시 403 에러가 납니다 버전은 20.0.1입니다

  • spring-boot
  • oauth
  • spring
  • java
kim미소 파파 댓글 3 좋아요 1 조회수 1126

쿠키

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강의를 진행하면서 테스트중 계속 회원가입을 하고 쿠키가 넘어가는 현상이 있었습니다. 기존 크롬에 쿠키를 다 지우고 인텔리제이를 끄고 난 후 부터는 정상 작동을 하였는데 혹시 어떤 이유 때문에 그랬는지 알 수 있을까요?

  • spring
  • MVC
병일 댓글 3 좋아요 0 조회수 512

profile email 권한페이지가 나오지 않습니다.

미해결

스프링 시큐리티 OAuth2

authorization_code 를 얻어오는 요청 보냄 login 페이지가 떠서 로그인함 email ,profile 등 이걸 허락하겠는가? (저는 이게 안뜹니다.) 8081이 안떠있으니 에러페이지 code를 복붙해서 access token 요청 -> accestoken 잘받아옴 해당 access token 으로 userinfo 요청시 403 forbidden 놓친 설정이 있나 확인을 여러번 하였는데 첫번째 강의에서는 Clients 설정에서 Authentication flow 에 implicit flow를 체크하셨는데 2번째 강의에는 해제 되어있길레 해제 해봤지만 결과는 동일합니다. 무엇이 문제인지 알 수 있을까요..? jwt.io에서 토큰 정보를 확인했을떄 다음과 같습니다. 제가 안되길레 여러 RoleMapping을 추가해본것입니다. { "exp": 1668576888, "iat": 1668576588, "auth_time": 1668576573, "jti": "6775c84b-9f26-4d8c-ab58-a09c136eb782", "iss": "http://localhost:8080/realms/oauth2", "aud": [ "realm-management", "account" ], "sub": "f35e128a-f3a9-48df-a784-5675ade34468", "typ": "Bearer", "azp": "oauth2-client-app", "session_state": "4b46d62b-0dbe-41ba-9901-a2465eed5f41", "acr": "1", "realm_access": { "roles": [ "offline_access", "uma_authorization", "default-roles-oauth2" ] }, "resource_access": { "realm-management": { "roles": [ "manage-users", "view-users", "query-groups", "query-users" ] }, "account": { "roles": [ "manage-account", "manage-account-links", "view-profile" ] } }, "scope": "profile email", "sid": "4b46d62b-0dbe-41ba-9901-a2465eed5f41", "email_verified": false, "name": "kakarot lim", "preferred_username": "user", "given_name": "kakarot", "family_name": "lim", "email": "user@keycloak.com" } 구글링 해서 알아본 결과 authorization_code를 요청할때 헤더에 scope=openid 로 하니 잘되었습니다. 이건 버전 차이라고 보면 될까요? 저는 도커로 20 버전을 사용하였습니다.

  • java
  • spring
  • spring-boot
  • oauth
dohyun_lim 댓글 1 좋아요 1 조회수 869

ThreadLocalMap.Entry 에 관한 질문입니다.

해결됨

스프링 핵심 원리 - 고급편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요. 이번 챕터에서 소개된 ThreadLocal 에 대해 공부하면서 소스코드를 따라가다가 보니 ThreadLocalMap 과 ThreadLocalMap.Entry 까지 찾아보게 되었는데요 ^^; ThreadLocalMap.Entry 가 WeakReference 를 상속받아 사용하는 이유가 별도로 있는지가 궁금합니다. 제가 생각해 보았을때.. 만일 Entry가 WeakReference가 아닌 경우 Thread가 살아있는 한은 해당 ThreadLocal 객체에 Strong Reference가 존재하기 때문에 GC에 의한 메모리 회수가 이루어지지 않는 문제가 있어 그런것이 아닐까 싶습니다만, 일반적으로 ThreadLocal을 사용할 때에는 private static final ThreadLocal<MyClass> myClassHolder = new ThreadLocal<>(); 과 같은 형태로 항상 ThreadLocal 인스턴스에 Strong Reference 가 존재하는 형태로 사용하므로 Entry가 WeakReference 를 상속받은 의미가 크게 없지 않나 하는 생각이 들어 질문드립니다.

  • spring
  • 디자인-패턴
bluewings109 댓글 1 좋아요 1 조회수 411

RequestResponseBodyMethodProcessor의 역할

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요~ 요청 매핑 핸들러 어뎁터 구조 16:35 부분 들으면서 제가 이해한 게 맞는지 궁금해서 질문 드려요! 요청 메서드에 @RequestBody 또는 @ResponseBody가 있는 경우 RequestResponseBodyMethodProcessor클래스가 호출되며 이 클래스가 ArgumentResolver의 역할을 하기 때문에 강의자료에 RequestResponseBodyMethodProcessor (ArgumentResolver) 이렇게 써주셨다고 이해했는데요. RequestResponseBodyMethodProcessor클래스가 Response 처리도 하기 때문에 ReturnValueHandler의 역할도 같이 한다고 이해해도 되나요?

  • spring
  • MVC
yunjcho 댓글 1 좋아요 0 조회수 374

V4 에서 DTO로 조회시 즉시 로딩이 되는 건가요?

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] V4 에서는 fetch join을 사용하지 않으셨는데 조회 쿼리는 한번만 나가는 것을 확인했습니다. dto로 조회를 하면 Lazy로딩으로 세팅해도 즉시 로딩으로 나간다고 이해하면 될까요?

  • spring-boot
  • JPA
  • java
  • spring
김가가가 댓글 1 좋아요 2 조회수 607

Runtime Error log 관련 질문

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

log를 보면 Runtime error log가 2번 찍히는데, -> 첫번째 요청에서, errorEx() 컨트롤러에 의해 throw new RuntimeException("예외 발생!"); -> 첫번째 요청에서, error 발생 이후 WAS로 역전파 되는 과정에서 filter에 의해 } catch (Exception e) { log.info("EXCEPTION!!"); throw e; 총 2번 찍힌다고 생각했습니다. 그런데 Log의 순서를 보면 컨트롤러 내부의 printErrorInfo가 호출되는 과정에서 runtime error Log가 찍힙니다. 이것이 단순히 log가 찍히는 속도의 차이에 의한 것인지, 아니면 실제로 다른 곳에서 error가 발생해서 log가 찍힌것인지 궁금합니다.

  • spring
  • MVC
지평선 댓글 1 좋아요 2 조회수 797

컬렉션타입이라는게...정확히 뭔가요?

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

컬렉션타입이 었었다 라고 하시는데 혹시 컬렉션타입이라는게 @Embeded 와 관련되어 Address 이런 클래스를 일컫는말인가요?

  • spring
  • JPA
  • java
  • spring-boot
댓글 1 좋아요 0 조회수 465

@Component 가 없는데 @Autowired를 어떻게 쓸 수 있는 거죠?

미해결

스프링 핵심 원리 - 기본편

@Component //<--가 들어가 있어야 Autowired를 쓸 수 있는 거 아닌가요? static class TestBean{ @Autowired(required = false) public void setNoBean1(Member noBean1){ System.out.println("noBean1 = " + noBean1); } @Autowired public void setNoBean2(@Nullable Member noBean2){ System.out.println("noBean2 = " + noBean2); } @Autowired public void setNoBean3(Optional<Member> noBean3){ System.out.println("noBean3 = " + noBean3); } } @Component를 붙여서 빈을 자동등록 하게 되면 수동등록으로 의존관계 주입을 해주는 설정 코드를 쓰지 않기 때문에 Autowired를 붙여서 의존관계 주입을 해주는 걸로 알고 있습니다. 그런데 수업 예제에서는 @Component가 없는데 어떻게 Autowired가 붙을 수 있는 건가요?

  • spring
  • oop
g g 댓글 1 좋아요 0 조회수 750

SpringMemberSaveControllerV1의 process() 파라미터

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요! SpringMemberSaveControllerV1의 process()메서드 파라미터에 대한 질문인데요 Front Controller를 사용해서 구현할 때 서블릿 종속성을 배제하기 위해 Front Controller에서 HttpServletRequest의 인스턴스에 담긴 값을 일부러 Map에 담아 실제 Cotroller로 옮겨줬다고 이해하고 있는데 @RequestMapping을 사용하면서 다시 HttpServletRequest를 사용하는 이유가 궁금합니다. FrontController역할을 하는 Dispatcher가 존재하여 구조는 변하지 않았으나 @RequestMapping을 사용 하면 매핑되는 RequestMappingHandlerMapping의 특징으로 URI 요청이 HandlerMapping까지 넘어오기 때문에 일부러 Map에 담아줄 필요없이 그대로 HttpServletRequest 인스턴스를 사용하는 거라고 생각했는데 맞나요?

  • MVC
  • spring
yunjcho 댓글 1 좋아요 0 조회수 580

회원 수정 API만들떄 질문

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 수업중에 수정관련 API는 변경 감지를 통한 변경이라고 설명을 해주셨고 Entity는 getter외 나머지는 잘 쓰지 않는다는 말씀을 해주셨습니다. 수업중에는 setter를 통한 변경을 하였는데 실무에서는 어떤 방식으로 하는지 궁금해서 질문 올립니다.

  • java
  • spring
  • JPA
  • spring-boot
wjdghks6086 댓글 1 좋아요 1 조회수 297

ItemServiceTest 아이템 수정 테스트코드

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

@Test public void 아이템_수정() throws Exception { // 아이템을 등록하고 수정하고 조회한대로 되었는지 equal 테스트 // given Item book = new Book(); book.setName("책책"); itemService.saveItem(book); // when Item updateBook = itemService.updateItem(book.getId(), "책1", 1000, 10); Item findOne = itemService.findOne(book.getId()); // then Assertions.assertThat(findOne.getName()).isEqualTo(updateBook.getName()); } 아이템 수정 Test 코드를 작성해보았는데 이렇게 작성하는게 맞을까요?

  • spring
  • spring-boot
  • java
  • 웹앱
  • JPA
댓글 1 좋아요 0 조회수 467

인기 태그

인프런 TOP Writers

주간 인기글