묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
run실행시 테스트코드에서 컨트롤러로 돌리는 방법
실행시 이전강의에서 실행한 테스트코드만 실행되는데 다시 8080포트로 실행하는 방법을 모르겠습니다...
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
공부법 질문드립니다
안녕하세요 공부방법 질문드립니다! 저는 비전공자이고 자바만 공부했는데요 자바 배웠으면 프레임워크인 스프링을 공부해야 된다고 해서 주변 사람들에게 추천을 받아 이 강의를 듣게 되었습니다. 김영한 강사님의 커리큘럼 그대로 따라가려고 했는데요 입문 강의임에도 불구하고 생각했던것 보다 어렵고 마음과 다르게 진도 나가기가 힘드네요... 강의를 들으면서 완전 아예 이해가 전혀 안된다! 이건 아닌데요 그래도 많이 어렵습니다. 어려워서 스프링공부법 관련해서 인터넷에 계속 검색하다 보니 스프링 공부 전 jsp를 먼저 공부하는게 좋다는 말들이 있는데요 저 혼자 jsp를 따로 공부한 후에 지금 이 강의 들으면서 김영한강사님의 커리큘럼을 따라가는게 맞는건가요? jsp를 먼저 공부하고 와야 할까요? 공부법 조언해주시면 감사하겠습니다 !
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Dispatcher Servlet은 어디 있나요 ?
강의를 듣던 중 질문드립니다. SpringMvc패턴에서 v1에서 각각의 클래스에 @Controller 애노테이션으로 등록만 해주었는데 FrontController 역할을 하는 Dispatcher Servlet의 클래스? 등은 따로 존재하지 않는건가요? 이번 소스가 정확히 어떤식으로 돌아가는지 잘 이해가 가지 않습니다 ㅠㅠ Http의 parameter를 입력 받고 스프링 빈에 등록되어 있는 핸들러 @RequestMapping 으로 찾은 다음 따로 무언가 작성해주지 않더라도 스프링 내부에서 자동으로 어댑터를 찾아서 핸들러를 적용시키고 뷰 리졸버까지 자동으로 되는건가요? ㅠㅠ 구조가 잘 이해가 가지 않습니다 김영한 선생님께서 만든건 Controller 클래스와 .jsp의 뷰밖에 없는데 스프링이 어떻게 알아서 다 하는지... 헷갈립니다 그리고 제가 컨트롤러의 리턴값을 무엇을 반환할지도 모르는데 만약 스프링안에 등록된 어댑터로 찾을 수 없으면 에러가 발생하나요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
produces=MediaType
선생님 안녕하세요. MediaType 설정 관련해서 질문이 있습니다. produces 속성을 MediaType.APPLICATION_JSON_VALUE로 설정하면 에러 바디도 JSON 데이터로 만들어서 반환하는 걸 이번 강의에서 배웠고 여기에서 accept 헤더가 중요한 역할을 하는 걸 알았습니다. 그런데 여기서 궁금한 것이 제가 테스트를 해보니, accept=*/*로 설정하면 왜 application/json 방식이 더 우선순위를 갖는 걸까요? ErrorPageContriol에서 produces 값을 더 구체적으로 설정해줘서 처음에는 application/json 방식이 (accept=*/* 로 설정할 경우) 더 우선권을 갖는 거라고 생각했는데, 처음에 만든 produces 값 설정을 안 한 컨트롤러 메서드를 produces=MediaType.TEXT_HTML_VALUE로 변경하고 html과 json 방식 메서드 두 개가 있는 상황에서 테스트해도 여전히 json 형식이 더 우선권을 갖는데 왜 그런지 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC 패턴과 용어에대해 질문이있습니다
안녕하세요, 선생님 로드맵을 쭉 따라가며 스프링 열공중인 취준생입니다. 강의를 듣기전 얕게나마 MVC에대해 공부를 했었는데 강의를 들으면서 알고있던 개념과 다른점이 생겨서 질문드립니다. MVC패턴이 유지보수를 편하게하고 협업개발을 원할히 하기위해 웹을 세부분으로 나눈거라는점은 알겠는데 정작 웹개발 프로젝트를 하게되면 DAO(Repository)와 DTO(Domain) 그리고 Service라는 구체적인 객체들을 보게되더군요. 선생님 강의에서는 서비스와 dao를 별도로 구분하고 모델을 dto역할로 제한해서 설명하셨는데 어떤 책에서는 dao dto 서비스 셋을 모두 뭉텅그려 모델이라고 말하는 곳도 있더라구요 용어를 정확히 어떻게 정리를 해야할지 도움주셨으면 합니다 ㅠㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
properties 말고 yml에는 이렇게 하는게 맞을까요?
안녕하세요 선생님! 강의를 듣고 제 프로젝트에 메세지를 적용시켜보고 있습니다. 제 강의는 설정파일이 .yml이라서 yml형식으로 설정을 따라해보았습니다. application.yml spring: ...(생략) messages: basename: messages ...(생략) messages.yml label: search: siteName: "사이트 이름111" lectureName: "강의 이름" teacherName: "강의자 이름" starRating: "별 점"...(생략) 이렇게 yml파일을 구성한뒤 html에서 똑같이 th:text=#{label.search.siteName} 를 해보았는데 적용이안됩니다. 그래서 구글링을 좀 해보니 yml messages을 properties처럼 사용하는 라이브러리를 찾아서 적용해보았습니다. build.gradle implementation 'net.rakugakibox.util:yaml-resource-bundle:1.1' MessageConfiguration package dongho.classflix.config;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.MessageSource;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.support.ResourceBundleMessageSource;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configurationpublic class MessageConfiguration implements WebMvcConfigurer { @Bean public MessageSource messageSource( @Value("${spring.messages.basename}") String basename, @Value("${spring.messages.encoding}") String encoding ){ YamlMessageSource ms = new YamlMessageSource(); ms.setBasename(basename); ms.setDefaultEncoding(encoding); ms.setAlwaysUseMessageFormat(true); ms.setUseCodeAsDefaultMessage(true); ms.setFallbackToSystemLocale(true); return ms; } private static class YamlMessageSource extends ResourceBundleMessageSource{ }} 그래도 적용이 안되었습니다. messages는 보통 properties로 사용을 한다고 하기에, 일단 지금은 application.yml와 messages.properties를 사용하여 해결한 상태입니다. 질문정리 1. messages.yml을 사용하려면 어떻게 해야하나요? 2. 그냥 application.yml에 messages.properties를 사용해도 무방할까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 로그인 인증 관련 질문
Rest api에서 세션 인증 방식을 사용한다고 할때, 이와 관련해서 몇몇 질문사항이 있습니다. 1. 세션의 저장 - 별도의 세션 레포지토리를 구성하고, 클라이언트의 요청이 올때 세션 레포지토리로부터 유저의 정보 조회해야 하는지 - 톰켓이 세션 저장소를 보유? 해서 request.getSession & session.getAttribute 사용 2. 로그인 당시 응답 - 클라이언트한테 response에 세션 아이디를 같이 넣어서 보내줘야 하는지 - 그럴 필요없이 톰켓이 세션 내부 저장소를 가져, 항상 세션 아이디를 보내주는지 postman으로 테스트 해볼때는 sessionId를 쿠키(postman이 가지고있는?)에 저장해서 보관하고이 값을 갱신해주기 전까지는 같은 값을 보유하고 있는데 세션을 별도로 저장하고 응답으로 주어야 하는지, 그럴 필요가 없는지 헷갈려서 질문드립니다. 3. 예를 들어 유저가 상품을 구매하는 request를 rest api를 통해 날리면, 백엔드와 프론트엔드가 통신할때 userId 혹은 username으로 회원의 정보를 보내는게 아니라,sessionId(인증에 필요한 정보, 토큰이던지)와 상품 정보를 보내주고,백엔드에서는 세션 id를 통해 세션 저장소에 저장되어있는 유저의 정보를 얻고, 이를 기반으로 상품 구매 처리를 해야 할 것 같은데,이 경우 강의에서 말씀하신대로 여러 유저의 요청이 많은 경우, 서버에 부하가 오는 것 같아 별로인 것 같기도합니다. 그래서 어떻게 처리하는게 맞는지 더 헷갈리는 것 같습니다.이렇게 처리하는 방식으로 하는게 맞는 지 ( 세션이나 jwt 토큰을 사용할 경우) 궁금 합니다. - 이게 맞다면, 모든 컨트롤러에서 매번 세션 레포지토리를 조회해야하는데 번거로운걸 보니 맞는 방법이 아닌것 같고요.. - Config에 bean으로 세션 체크하는 로직을 등록해서 사용하는 방법을 채택할수도 있는것 같고, 리턴값으로 적어도 회원의 아이디는 줘야 하니 4. 또한 jwt 토큰 방식으도 있어스프링 시큐리티를 사용하지 않고 구현을 해보고 싶은데 이 경우에는 jwt 토큰 레포지토리를 구성해서 해보는게 맞는지 궁금합니다.정확한 답이 아니라, 어떤걸 찾아보면되는지 힌트 방식이여도 좋으니 알려주시면 감사드리겠습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC 패턴에서 Model 의 정의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(http://bit.ly/3fX6ygx)을 먼저 확인해주세요. 3. 질문 잘하기 메뉴얼(http://bit.ly/2UfeqCG)을 먼저 읽어주세요. 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 항상 강의 너무 잘 듣고 있습니다. 강의를 듣고 Servlet -JSP를 이용한 MVC 패턴에서 Controller = Servlet View = JSP Model = Request(Attribute) 라고 이해했는데요, 이 때 Controller 와 View 가 서로 Model(Attribute) 을 통해 데이터를 주고받는다고 이해했습니다. 그리고 이 Controller 를 좀 더 객체지향적으로 만들기 위해 Service 와 Repository로 레이어를 나누어 역할을 분리한다고 이해했는데요. 그런데 최근 후배에게 MVC 개념을 설명해주다가 이상한 걸 발견했습니다. 저희 회사 신입사원 교재에 MVC 패턴의 정의가 이렇게 나와있는 겁니다. - Model : 비즈니스 로직(클라이언트 요청에 대한 업무 처리) 및 데이터 담당 >> 비즈니스 로직 = business service(biz) + data access object(dao) 이걸 보면 Service 와 Repository는 Model 에 해당하는 개념처럼 보입니다. 또한 해당 교재에서는 이처럼 비즈니스 로직을 Controller(Servlet)와 분리하는 것이 곧 MVC 패턴이라고 설명하고 있는데요, 제가 이해하는 "Controller(Servlet)와 View(Jsp) 를 분리하고 Model(Attribute)로 데이터를 전달하는 것이 곧 MVC 패턴이다" 라는 개념과 사뭇 다른 것 같습니다. 제가 뭔가 잘못 이해하고 있는 걸까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2.bat 실행 관련 질문입니다
안녕하세요,, bin 에서 h2.bat를 실행하거나 cmd에서 h2.bat 후 엔터를 해도 서버모드로 접속이 안됩니다,, 어떻게 해야 할까요..?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
4:07 오류나는 부분
안녕하세요 ! 4:07 쯤에 선생님은 오류나시는데 저는 오류가 안 나서 어디가 문제인지 잘 모르겠어서 질문드립니다 ㅜㅜ 죄송하지만 하나 더 여쭤볼게 있습니다! ctrl + shift + enter 이 코드 자동완성(; 붙이기)인 것으로 알고 있는데 어느 순간 단축키가 안 먹힙니다ㅜ 다른 단축키는 잘 되는데 제가 뭘 잘못 만진건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
System.out.println() vs 로그
안녕하세요. 둘의 차이를 정확히 알고 싶습니다. 선생님이 말씀하시길 현재 IDE 개발중에는 콘솔(System.out.println()) 에 남기지만 실제로는 로그로 남겨야 된다고 하셨습니다. 둘의 차이가 궁금하네요. 나중에 서버를 올려서(ex. linux) 로그 코드에 의해 출력되는 것들도 결국에는 서버의 콘솔에 그 로그들이 남는 것 아닌가요? 그리고 그 흘러가는 것들을 다 로그 파일로 남기거나, 그대로 두면 로컬 IDE 의 로컬처럼 그대로 흘러가는 것이고.. 그리고 System.out.println("hello") 코드를 서버에 올려서 본다면 hello 가 로그에 남나요? 콘솔과 로그의 레벨 차이? 영역 등의 구분이 궁금합니다. 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요 영한님. 테스트에서 오류가 납니다.
DB는 Mysql로 사용하고있습니다. SpringConfig에서 JdbcTemplateRepository를 연결하고 테스트를하면 오류가 납니다. org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column 'encrypted_password' in 'field list' 오류 나는 지점을 확인해보면 JdbcTemplateRepository의 Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource(parameters)); 이 행을 가르킵니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ArgumentResolver 와 MsgConverter
안녕하세요. 명확히 이해가 안되서 질문올립니다. 1. ArgumentResolver는 Controller에 선언된 Parameter를 생성하는 역할, MsgConverter는 HTTP 메세지를 ArgumentResolver가 생성한 객체에 넣어주는 역할이라고 생각하면 될까요? 2. ResquestBody, ResponseBody가 아닌, ModelAttribute도 이와 같이 작동하는 게 맞을까요?? 3. Spring code를 보니 ReqParam관련 Resolver는 class이름이 Resolver로 끝나는데, ModelAttribute만 Proccessor로 끝나더라고요. ModelAttribute만 Proccessor인 특별한 이유가 있을까요? 4. ArgumentResolver(or ReturnValueHandler)가 HTTP메세지 컨버터가 필요없는 경우는 무엇인가용? 궁금합니당!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
getter and setter
안녕하세요 alt + insert 후 getter 검색하면 getter and setter 이 나오지 않습니다,,,
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 오류,,,
안녕하세요 제가 다른 강의 때문에 자바 1.8버전을 사용하고 있고 인텔리제이도 잘 알지도 못해서 아무거나 깔다가 인텔리제이 에듀를 깔아서 사용하고 있었슴미다 cmd에서 오류가 생기는 것 같아 인텔리제이 에듀를 삭제하고 커뮤니티를 다시 깔아서 처음부터 하려고 하였는데 "Error running 'All in hello-spring': No junit.jar" 라는 메시지와 함께 실행이 되지 않습니다ㅜㅜ 왜 이러는 것일까요 자바 1.8이나 자바 11버전을 용도에 따라 골라 사용하거나 그럴 수는 없는건가요? ---------------------------------------------------------------------------------------------------------------- https://stackoverflow.com/questions/4757800/configuring-intellij-idea-for-unit-testing-with-junit 페이지를 참고하여 junit을 수동으로 추가한거같은데 "Tests were not found in module 'hello-spring.main'. Use module hello-spring.test instead" 라는 메시지가 뜹니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
http://localhost:8080/hello 오류
http://localhost:8080/hello 이 부분 다른 분들도 오류 나는 것 같은데 답변들 다 확인해보아도 답을 못 찾겠습니다 콘솔에는 에러 메세지도 없고 패키지 위치는 선생님과 똑같은거 같은데 해결을 할 수가 없습니다ㅜ 자바 버전이나 인텔리제이 에듀인게 오류 원인일까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
prg 패턴에 관해서 질문 드립니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용] post mapping에서 prg패턴이 필요하다는 사실을 강의를 통해 알게 되었습니다. 1.api 통신을 한다면 유저가 새로고침을 할 수 있는 모든 post 에 관해서 prg 패턴을 적용시키는 것이 일반적인가요? 2. api 통신에서 post를 할때 front에 id를 return해주어야 한다고 할 때, prg 패턴을 적용시키는 것이 힘들 것 같은데, 이 같은 상황에서는 일반적으로 어떻게 해결하는지 궁금합니다. 3. delete할 때도 유저가 새로고침을 통해 id와 함께 여러번 접근할 수 있을 것같은데, deletemapping 또한 redirect, get 패턴을 적용시켜야 하나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@ModelAttribute가 있을 때, Model 객체 생성
안녕하세요. 강의 잘보고 있습니다. (질문을 많이 하는 거 같아서 좀 죄송스럽지만..) 영한님이 @ModelAttrubute가 파라미터에 있으면 파라미터에 Model 객체가 있지 않아도 자동으로 Model 객체가 생성되고 Model.addAttribute 까지 해준다고 하셨는데요.(파라미터에 @ModelAttribute가 선언돼 있으면 Model은 선언되지 않아도 무조건 생성된다고 생각해도 될까요?) 그럼 이 역할을 해주는 게 ArgumentResolver일까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ReturnValueHandler의 반환
안녕하세요. 강의를 보다 궁금한 점이 생겨 질문 드립니다. ReturnValueHandler가 여러가지 controller들의 반환값을 처리해서 핸들러 어댑터로 값을 준다고 하셨는데, 이때 @ResponseBody나 HttpEntity를 반환하는 controller는 ReturnValueHandler에서 어떤 타입으로 반환되나요? 그리고 강의 앞부분에서 핸들러 어댑터는 ModelAndView를 dispathcerServlet에 반환해서 viewResolver를 실행시키는 것으로 배웠는데, @ResponseBody, HttpEntity 일때는 핸들러 어댑터가 무슨 타입을 반환하고, dispatcherSerlvet에서 어떻게 처리되는지도 궁금합니다. 좋은 강의 항상 잘 듣고 있습니다. 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Test class 위치
안녕하세요. 강의 너무 잘 듣고 있습니다. 상세히 설명해주셔서 감사합니다. 한 가지만 여쭤보겠습니다. 테스트 클래스를 test 디렉토리에 만들 때, 만드시 원래 소스코드와 패키지 이름과 위계 등을 맞춰서 대응되게 만들어줘야 하는 건가요?