묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew.bat 저 처럼 헤메시는분들이 없기를 바라며
저는 cmd를 사용하지 않고 구글에서 cmmder을 설치하여 사용합니다. 제일 먼저 spring 디렉토리로 이동합니다. cd 디렉토리 그 후 ls -al을 입력해 보면 gradlew.bat 이라는 이름의 bat파일이 보이실 거에요. 복사하여 gradlew.bat build를 해줍니다. 위와 같이 Build Successful이라 뜨면 성공한거구요. ls -al을 해보면 build 폴더가 보이실 거고 cd build를 해주신 다음에 cd libs 해주고 해당 디렉토리에서 java -jar hello-spring-0.0.1-SNAPSHOT.jar 이렇게 해주니 성공적으로 실행이 돼네요. 어찌보면 영상에 나와있는 내용 그대로 글로 적은것 뿐이지만 누군가에게 도움이 돼셨길 바라며
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA가 Mybatis를 완벽히 대체 가능한가요?
주니어 개발자로 현재 SI업체에서 근무하고 있는데, 개발시 Mybatis를 사용합니다. 강의를 듣고 간단하게 JPA를 적용해서 샘플 프로젝트정도를 만들어 보았는데 개인적으로는 매우 마음에 들어서 프로젝트에도 한번 써보고 싶어서 사수에게 건의 하였으나 JPA는 간단한 CRUD에는 좋은데 실제 프로젝트에서는 통계등을 조회해야하는데 매우 많은 조인들이 들어가고 sql 쿼리만 수백줄이 되는데, 이런걸 JPA가 대체하기 어렵다. 라는 답변을 받아서 문의 드립니다. 근데 생각해보면 좀 이상한게 해외에서는 JPA가 더 많이 사용된다는데 해외에는 차트같은게 없나..? 싶은 생각이 들더라구요. 그래서 JPA가 mybatis를 완벽히 대체가 가능한건지, 아니면 둘을 병행해서 써야 하는건지 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
servletmvc쪽 질문이 있습니다
안녕하세요 현재 mvc강의를 수강하고 있는 학생입니다 초반에 servlet쪽은 다 따라하고 실행이 잘 되었는데 현재 servletmvc쪽으로 넘어가니 webapp/index.html 쪽부터 시작해서 servletmvc 패키지쪽들은 안되네요 현재 인텔리j 커뮤니티버전 사용중입니다 현재 restart도 해보고 오픈톡방에 질문도 해보았는데 다른분들도 이해가 잘 안된다고 하시네요 ㅠㅠ 현재 404로 못찾고 있습니다 404 -> 맵핑이 제대로 되어있지않다.. 왜이런걸까요??? 메일로 혹시 프로젝트를 보내도 될까요 ?? <현재 오류 내용> Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Tue May 11 17:08:07 KST 2021 There was an unexpected error (type=Not Found, status=404).
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
dispatcher 질문
안녕하세요 선생님 선생님께서 강의해주신 내용중에서 궁금한게 있습니다. servlet에서 dispatcher.forward를 통해서 html파일을 호출하셨는데 dispatcher보다는 pagecontext 객체에 forward메서드가 있는데 이것도 브라우저에 response를 주지 않고 바로 제어권이 이동하는 문서로 주소가 바뀌지 않고 이동한다고 알고있습니다. 혹시 이 둘이 다른기능을 하는건가요? 선생님께서 dispatcher를 사용하시는 이유가 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
상품 삭제 관련해서 질문이 있습니다.
먼저 강의 항상 잘 보고 있습니다 선생님!!! 제가 editForm 아래에 <div class="col"> <button class="w-100 btn btn-danger btn-lg" onclick="location.href='item.html'" th:onclick="|location.href='@{/basic/items/{itemId}/edit/delete (itemId = ${item.id})}'|" type="button">삭제 </button></div> 추가후 컨트롤러에 @GetMapping("/{itemId}/edit/delete")public String editDelete(@PathVariable Long itemId) { itemRepository.delete(itemId); return "redirect:/basic/items/";} 추가하여 지우는걸 브라우저에서 성공 했습니다. 다름이 아니라 DeleteMapping 을 사용하여 지우고 싶은데 form method = "delete"로 해도 안되서 질문을 남겨봅니다. 위에 방식대로 하면 실행이 됩니다만 혹시 DeleteMapping 을 사용해서 할 방법이 있을까요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Repository 관련 질문 드립니다!
안녕하세요 김영한 선생님! 강의 항상 잘 듣고 있습니다ㅎㅎ MVC 패턴 그림을 보다가 문득 궁금한 점이 생겼는데요, 아직 많은 곳에서 (제가 다니는 회사 포함) DB에 직접 접근하여 데이터를 처리하는 객체를 DAO 라는 용어로 사용하고 있는데, 이게 특정 시점부터 Repository 라는 용어를 사용하는 것으로 권장이 된건지, 아니면 ORM을 어떤걸 사용하느냐에 따라 달라지는건지 궁금합니다!
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
private final을 사용하신 이유가 있으신가요?
안녕하세요 영한님! 좋은 강의 잘 듣고 있습니다. 지금까지는 FrontController에서 private final 을 사용하지 않으셨는데 v5에서부터는 private final Map<String, Object> handlerMappingMap = new HashMap<>(); private final List<MyHandlerAdapter> handlerAdapters = new ArrayList<>(); 위와 같이 private final을 사용하신것을 볼 수 있었습니다. 이유가 무엇인지 알려주시면 감사하겠습니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
13:09 store.clear() 에서 store에 빨간줄이 뜹니다 왜이런가요?
13:09 store.clear() 에서 store에 빨간줄이 뜹니다 왜이런가요? java: cannot find symbol symbol: method clearStore() location: variable repository of type hello.hellospring.repository.MemoryMemberRepository
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
validateDuplicatedName() 관련 질문 드립니다. - 자답 추가!!
회원가입 시 이름 중복 확인하는 메소드 안에서 IllegalAccessException 을 try/catch 문 쓰지 않고 작성을 하셨는데 하신 것을 보고 따라서 try/catch문 쓰지 않고 throw new IllegalAccessException을 하니 error: unreported exception IllegalAccessException; must be caught or declared to be thrown 이라는 에러가 발생합니다. 혹시 어떠한 원인인지 아실까요? 자바 버전은 오라클에서 다운받은 11입니다. ----------------------------------- 자답 추가합니다 ㅠㅠ IllegalAccessException 가 아니고 IllegalStateException으로 적었어야 했네요 ㅠㅠ 하.... 덕분에 강의안을 처음부터 천천히 복습하고 좋았습니다 ^^ ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ 다들 화이팅!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
요청에 응답이 오래걸려서 그 사이에 새로고침을 하면 어떻게 될까요?
안녕하세요. PRG 패턴에 대해 듣다가 생긴 의문점인데, PRG 패턴으로 POST 재요청을 막을수 있다는 점에 대해서는 이해를 햇는데 POST요청자체가 응답이 늦어져서 기다리는 상황에서 새로고침을 반복하면서 POST 요청이 반복해서 가는것은 PRG 패턴으로 해결이 안 될 것 같은데 방법이 있을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 빈의 자원공유 관련 질문드립니다
이번에 회사에서 Spring Security로 동적 ACL을 개발하다가 사용자 별로 독립적인 권한을 주고, 이 권한에 따라 사이드메뉴에 보이는 항목들을 다르게 해주었는데요. 이때 모든 쓰레드가 각 권한별로 갖고있는 리소스 접근권한 정보에 대해 알게하고 싶어(사이드 메뉴를 렌더링해야 하므로) 스프링 빈을 하나 만들고 이 빈에 해당 정보를 공유자원으로 등록했습니다. 자료구조는 ConcurrentHashMap을 썼습니다. 모든 쓰레드가 공유해야 할 자원이라 스프링 빈을 썼고 이로 인해 어떤 문제가 발생할 수 있을지 곰곰히 고민해봤는데 대략적으로 어떤 문제들이 발생 할 수 있는지 잘 모르겠습니다. 대부분의 스프링 책과 강의들에선 스프링 빈은 모든 쓰레드에서 상태를 공유하므로 사용에 주의를 기울여야 한다라거나 불변해야 한다는 이야기를 많이하지만, 자원을 공유하기 위해 스프링 빈을 쓰라는 얘기는 못봤었거든요. 왜 공유해야만 하느냐면 이렇게 하지 않으면 유저별로 로그인할때마다 데이터베이스에서 자신이 갖고있는 리소스 접근권한을 모두 검색해서 가져와야만 하는데, URL의 개수가 너무 많았기 때문입니다. 혹시 어떤 문제가 발생할 수 있을지, 더 좋은 방법은 없었는지에 대해 의견을 구합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 빈의 역할이 무엇인가요?
안녕하세요! 스프링 빈의 역할이 무엇인지 잘 모르겠습니다..! 빈 자체의 개념이 이해가 안가서 서치를 좀 해보니" 매번 클라이언트에서 요청이 올 때마다 각 로직을 담당하는 오브젝트를 새로 만들어서 사용한다고 생각해보자 요청 한 번에 5개의 오브젝트가 새로 만들어지고 초당 500개의 요청이 들어오면, 초당 2500개의 새로운 오브젝트가 생성된다. 서버가 감당하기 힘들다."그래서 빈이 필요하다 라는 말을 봤는데 그 필요성은 알겠으나 정확하게 빈이 무엇인지 모르겠습니다 또한 왜 new로 선언하면 빈이 되지 못하는건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
핸들러 매핑 방식이 궁금합니다
안녕하세요! 어댑터 이후 머릿속이 복잡해서 질문이 많더라도 양해부탁드립니다ㅠㅠ 1. 이전에 했던 V5에서는 프론트 컨트롤러 생성자에서 핸들러와 핸들러어댑터 매핑이 이루어졌는데, 스프링에서도 DispatcherServlet이 생성될때 매핑을 하는것인가요? DispatcherServlet도 스프링 컨테이너에 빈으로 등록이 되는건가요? 2. @Component("/url")등이 스프링 빈으로 등록될 때 스프링에서 자동으로 RequestMappingHandlerMapping과 BeanNameUrlHandlerMapping등의 Map객체에 넣어놓고 필요할때 조회하는 방식이 맞나요? 아니면 BeanNameUrlHandlerMapping등이 함수처럼 요청이 생겨 필요할때 빈들을 돌아가며 찾는것인가요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
service 메소드를 public으로 가져오면 안되는 이유가 있나요?
안녕하세요 영한님! 다름이 아니라 service 메소드를 override할 때 protected로 되어있는 코드를 만들어야 한다고 해주셨는데 그 이유가 뭔지 설명 해주시면 감사하겠습니다. protected로 접근 제어자를 지정하면 같은 패키지 이거나 다른 패키지라도 상속관계라면 해당 메소드에 접근이 가능할텐데 혹여 public으로 지정했을때 다른 패키지에 존재하는 클래스에서 해당 메소드를 override 할 수 있는 가능성을 없애기 위해서 인가요? 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
통합 컨트롤러에서 핸들러의 기준은 컨트롤러인가요? 메서드인가요?
안녕하세요. 먼저 좋은 강의 감사합니다. MVC 패턴을 구현할 때에는 handlerMapping 정보에 key로 URL과 value로 controller 객체를 담고 실행했는데요. 통합된 컨트롤러를 하게되면 URL 정보가 메서드마다 매핑되는데 handler Mapping에 controller를 handler로 담고 있다면 어떻게 해당 메서드를 찾는지 궁금합니다. 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
의존성 외부주입 관련 질문입니다!.
안녕하세요!. 강의 막바지에 해당 프론트 컨트롤러에 등록되는 핸들러 매핑 맵과, 핸들러어댑터 콜렉션에 대해서 외부에서 주입하도록 해봐도 된다고 하셨는데, 스프링을 사용할때는 @Configuration과 @Bean 애노테이션을 사용해 Config 클래스에서 의존성을 입맛에 맞게 주입할 수 있었는데, 지금과 같이 스프링을 안쓰고 주입을 하려면 어떻게 해야 할지 키워드가 있을까요? 프로젝트 구동시 어느 시점에서 서블릿이 스캔되서 등록되는지 몰라서 어디에 해당 정보들을 setter든 생성자든 주입해야할지 모르겠습니다 ㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
th:onclick에서 굳이 @{경로} 쓰는 이유가?
안녕하세요? 영한님. 오랜만에 올립니다. resources/templates/basic/addForm.html 에서, [취소] button 부분: th:onclick="|location.href='@{/basic/items}'|" 경로에 @{..} 쓰지 않고, th:onclick="|location.href='/basic/items'|" 로 써도 나중에 소스 보기하면 둘 다 똑 같이 보입니다. 이렇게요, onclick="location.href='/basic/items'" 그렇다면, 굳이 @{..} 를 쓰지 않아도 되는 것 아닐까요? 강의 중에 이미 말씀하신 건지 모르겠지만, 질문 올립니다. (Spring MVC 강의 질문이 너무 없어서 채워 드리려 적는 것, 아닙니다.^^)
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Optional.ofNullable
"회원 도메인과 리포지토리 만들기" 중 findById를 구현하실때 Null값 때문에 Optional.ofNullable 을 쓰셨다고 하셨는데 그냥 if문을 써서 Null이 아닐때 id를 return하고 아닐때 Null을 return하는 방식의 구현을 하면 안되는 건가요? 코드가 좀 더 지저분해져서 그런건가요? 제가 java 쪽은 아직 study를 하지 않아서 질문 설명에 조금 부족한 부분이 있네요.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
model 내용을 request로 옮기는 시점
안녕하세요 영한님! 현재 강의에선 model 오브젝트의 내용을 request 임시 저장소에 옮기는 작업을 MyView에서 하셨는데요. 이렇게 되면 render()도 오버로딩해야되고 파라미터도 (model, request, response)로 개인적으론 지저분(?)하다고 느껴져서 그냥 front controller에서 model 내용을 request로 옮기는 것이 기존 render(request, response) 그대로 사용할 수 있고 좋은 거 같습니다. 제 짧은 소견으론 아키텍처 관점에서도 크게 나쁘진 않은거 같은데 영한님은 어떻게 생각하시는지 궁금합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요! 서버 프레임워크에 관련해 질문이 있습니다.
4분 30여초 부분에서 서블릿 없이 자바 코드를 실행하는 서버 프레임워크가 있다고 해주셔서 궁금한 마음에 어떤 프레임워크들이 있나 검색을 해봤습니다만 검색에 걸리는것들이 별로 없네요. 혹시 어떤 서버 프레임워크들이 있는지 알려주실 수 있으실까요? 감사합니다!