템플릿 조각의 경로를 지정하는 코드에 의문이 생겨서 질문드립니다. 아래 2개의 코드는 실제로 돌려보니 같은 동작을 하는데, <div th:replace="~{template/fragment/footer :: copy}"></div> <div th:replace="~{/template/fragment/footer :: copy}"></div> 타임리프엔진이 특정 템플릿 조각을 가져올 때, 템플릿 조각이 어디있는지 찾는 경로는 상대경로나 절대경로 같은 개념이 없는 건가요?
타임리프에서 제공하는 기본 객체들을 사용하는 강의에서 스프링 부트 3.0 이후로는 ${#request} 등을 지원하지 않기 때문에, model에 직접 addAttribute 해야한다고 하셨는데요. request, response, servletContext는 add 하는데, session은 add하지 않아도 되는 이유가 무엇인가요?
안녕하세요. 강의를 듣던중 궁금한점이 생겨 질문 드립니다. 강의에서 basic-objects 템플릿의 결과로 위와 같이 나왔었는데, 스프링 부트 3.0 이후의 코드로 수정하여 실행하였을 때는, 위와 같이 나왔습니다. session 에 해당하는 객체가 달라졌는데, 바뀐 이유가 있나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 실행엔 문제가 없는데...
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. API 예외 처리 - 시작 강의 8:30 경에서 Postman으로 요청을 보낼때, Accept Header를 application/json 으로 설정하고 보내셨는데, HTML 로 응답이 오면 406 Not Acceptable 오류가 발생해야 할 것으로 기대했는데, 서버 내부에서 처리한 예외 오류가 HTML Page로 그대로 반환된 이유가 궁금하여 질문드리게 되었습니다. 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 질문 요약: controller에서 viewName을 리턴하고 나서 상황에 대한 궁금증인데요. resolve 후 리턴된 View가 빈인지 빈이면 scope가 어떤지 아니면 단순 개체인지가 궁금합니다. 다음은 제가 문제를 생각하게 된 상황인데요: JSP를 resolve할때 사용하는 InternalResourceViewResolver의 부모인 UrlBasedViewResolver가 있고 resolve한 후 리턴된 View는 스프링 빈이 맞는 것 같은데(UrlBasedViewResolver.applyLifecycleMethods()에서 빈 lifecycle method를 실행하는 것으로 미루어 추측. 실제 applicationContext에 빈 등록하는 코드는 찾지 못했습니다.) 그러면 /WEB-INF/file1.jsp /WEB-INF/file2.jsp 두개의 파일이 있고 각각 "file1", "file2"를 리턴하는 controller가 있어서 한 번씩 요청 됐을 때 반환되는 View는 빈인지 빈이면 scope이 어떻게 되는지 궁금합니다. 구체적으로: View가 다른이름 싱글턴 빈으로 두개가 생기고 계속 재활용 되는건가요 (가령 file1, file2라는 이름으로 각각 빈이 생기고 BeanNameViewResolver를 써서 재활용 한다든지) 아니면 request scoped 빈으로 그때마다 만들어지는건가요 아니면 InternalResourceView를 클래스로 갖는 싱글턴 빈 한개만 생기고 resolve 요청 올때마다 setUrl()로 url을 달리해서 넘기는 걸까요(이건 동시성 문제 같은게 있을 것 같습니다) 그것도 아니면 반환된 View는 빈이 아닌 단순 개체일까요(빈을 찾아보니 viewResolver나 viewNameTranslator는 있어도 view라고 끝나는 빈이 안 나오긴 했습니다. 스프링 Api doc을 봐도 UrlBasedViewResolver에 보면 createView(), instantiateView(), applyLifecycleMethods() 설명에도 view instance를 반환한다고 만 되어있고 View가 빈이란 언급은 없긴하네요)
============================== [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 다른거는 다 잘되는데 findByName만 오류가 뜨는데 이유를 모르겠습니다..
th:onclick="|location.href='@{/basic/items/{itemId}(itemId=${item.id})}'|" 을 간결하게 하고 싶어서 th:onclick="|location.href='@{/basic/items/${item.id}}'|" 이렇게 해봤는데 400에러가 뜨더라구요 onclick은 간결 표현식이 안되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 만약 allocationSize = 50 으로 잡고 애플리케이션을 올렸는데요 값자기 그 id(pk) 값이 1~2 올라가다가 서버가 다운되서 다시 올리면 53인가 부터 시작이잖아요? 그럼 2~52 까지의 pk 값은 안쓰고 계속 올라가는게 맞을까요? 실무에서 궁금합니다.
안녕하세요 mvc 2편 코드를 따라하며 프로젝트를 실행시키고 확인하다가, mvc 1편에 특정 부분을 확인하고자 1편에서 썼던 프로젝트를 실행시켰습니다 분명 2편 프로젝트를 실행중지하고, 1편 프로젝트를 실행했는데 localhost:8080 을 통해 나온 welcome page가 2편 프로젝트의 index.html 입니다 왜 1편 프로젝트의 index.html이 welcome page로 뜨지 않는 것일까요? 감사합니다!
안녕하세요 아래 링크의 문의글과 같은 상황이라 문의드립니다. build 생성 오류 질문드립니다...(윈도우) https://www.inflearn.com/questions/268449/build-%EC%83%9D%EC%84%B1-%EC%98%A4%EB%A5%98-%EC%A7%88%EB%AC%B8%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4-%EC%9C%88%EB%8F%84%EC%9A%B0 인텔리제이에서는 정상적으로 컴파일 되는 상태입니다. 인텔리제이를 종료 한 상태에서 CMD를 통해 gradle을 build하면 아래와 같은 오류 메세지가 나오는 상태입니다. 댓글에 안내해주신 대로 프로젝트를 새로 생성 후 바로 CMD에서 컴파일을 했는데도 오류 메세지가 동일해서 문의드립니다.
============================== [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 스프링 부트에서 정적 파일 관리를 제공하는 것이 그래들, 메이븐 모두에게 해당되는 개념인지 아니면 그래들에만 해당되는 얘기인지 궁금합니다. 메이븐 방식일 경우 webapp 하위에 resources와 WEB-INF로 나뉘는데 정적파일이 resources에 저장되는걸로 알고있습니다. 스프링프레임워크에서는 뷰리졸버의 prefix가 기본적으로 /WEB-INF/views/ 이렇게 세팅해두고 하는것으로 알고있거든요...
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 제가 DI를 제대로 이해한 것인지 확인 부탁드려도 될까요? MemberService클래스와 MemberServiceTest클래스의 멤버변수인 MemoryMemberRepository 객체가 다른 객체일 가능성이 있습니다. 각각의 두 클래스에서 굳이 동일한(총 2개) MemoryMemberRepository객체를 만들 필요는 없습니다. 왜냐하면 두 객체가 다른 객체일 가능성도 있고 목적상 다른 객체이어야 할 이유가 전혀 없기 때문입니다. 이러한 문제를 개선하기 위해 DI가 필요합니다. DI를 하는 방법은 다음과 같습니다. MemberService클래스 에서 멤버변수에MemoryMemberRepository 객체를 생성하지 않고 참조변수만을 선언합니다. 생성자를 만들어 MemoryMemberRepository 객체를 주입받고 그 객체를 멤버변수 MemoryMemberRepository로서 사용하도록 합니다. MemberServiceTest클래스 에서 MemberService 생성자를 사용하여 MemberService 객체를 생성하는데 이 때, 생성자의 인자에 MemoryMemberRepository 객체를 생성해 주입합니다. MemberService클래스에서 생성자를 만들었고 생성자의 인자로 MemoryMemberRepository 객체를 주입받고 그 객체를 멤버변수로 사용하기로 했다는 것을 잊지말아야 합니다. 이것이 핵심입니다. 물론 14분대 강의영상에서는 MemberServiceTest클래스에서 MemberService의 각 메서드들이 테스트되기 전 매번 MemberService 객체가 만들어져야 하므로 beforeEach() 메서드 안에서 구현이 되었을 뿐, DI의 원리는 지금까지 설명한 바와 동일합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] MemberService에서 아직 어떤 DB를 사용할지 모르니 참조타입을 MemberRepository로 하고 생성자를 MemoryMemberRepository를 한 것은 이해가 갔습니다. 다형성을 위해서 그러신 것이죠. private final MemberRepository memberRepository = new MemoryMemberRepository(); 근데 강의영상 12:00부터 의도치 않은 Member객체를 가르킬 수 있으니 MemberServiceTest에서 멤버변수 AfterEach()를 새로 만들어 리포지토리를 지우기 위해 MemoryMemberRepository의 clearStore()를 가져와야 했습니다. 그래서 MemberServiceTest 16라인에 MemoryMemberRepository memberRepository = new MemoryMemberRepository(); 이렇게 작성하셨습니다. 근데 제가 생각했을 때 참조타입도 MemoryMemberRepository 이고 생성자도 MemoryMemberRepository인데 어째서 참조변수의 이름은 memberRepository 인건지 궁금합니다. 귀한 시간 내주셔서 제 질문 읽어주셔서 감사합니다.