묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
DI 적용해보기!
안녕하세요! 수업 너무 재밌게 잘 듣고 있습니다. 수업 중에 FrontController에서 어댑터들을 DI로 적용할 수 있다고 하셔서, 좀 더 잘 이해하기 위해서 한번 해보려고 하였습니다! public FrontControllerServletV5(Map<String, Object> handlerMappingMap, List<MyHandlerAdapter> handlerAdapters) { initHandlerMappingMap(handlerMappingMap); initHandlerAdapters(handlerAdapters); } 코드를 돌리기 전에 생각해보니, 이런 식으로 파라메터를 입력받는 방법이 존재하지 않는다고 생각했습니다. V5에서 어떤 방식으로 DI를 구현하면 될까요?? 어떤 방식으로 접근해야할지 모르겠어서 질문드립니다! 감사합니다!!
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ModelAttribute가 한 개가 아닐 경우에는 어떻게 하나요?
콘트롤러에 @ModelAttribute Item item, BindingResult bindingResult 이렇게 연속적으로 매개변수를 설정해줘야 한다. bindingResult에 넣어주게 되는 Error 객체들이 @ModelAttribute의 필드들과 자동 맵핑되기 때문이다, 라고 이해했습니다. 그럼 두개의 ModelAttribute가 들어가는 경우 addItem ( @ModelAttribute Item item1, BindingResult bindingResult1, @ModelAttribute Item item2, BindingResult bindingResult2 ) 이렇게 설정해줘야 하는지요? 어라 그럼 템플릿에서 errors객체는 BindingResult bindingResult1, BindingResult bindingResult2 이 둘중에 뭐가 되는거지... 같은 의문이 들어서 질문드려봅니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost 오류
안녕하세요 선생님 지금까지 실행은 잘 되다가 크롬에서 http://localhost:8080 이 안되서 어제 application.properties 에 server.port=8082 로 변경하여 잘나왔었는데 또 무언가를 잘 못건드렸는지 사이트에 연결할 수 없음 localhost에서 연결을 거부했습니다. 다음 방법을 시도해 보세요. 연결 확인 프록시 및 방화벽 확인 ERR_CONNECTION_REFUSED 이렇게 나옵니다. 포트 번호를 다른것으로 바꿔도 위와 같이 나오는데 이유가 무엇인가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
아무리 해도 연결이 안되네요ㅠㅠ
Database "C:/Users/NOTE/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 윈도우 쓰고 있습니다. 비슷한 문제 있으신 분들이 올려준 질문 글이랑 답변도 보고 따라해보는데 계속 이 오류가 떠서 연결이 안됩니다.. 이거 때문에 진도를 못나가고 있네요.. 어떻게 해야할까요ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@WebServlet의 name을 지정해 줬는데 언제 사용하나요?
@WebServlet(name = "requestParamServlet", urlPatterns = "/request-param") requestParamServlet 은 언제 사용되어 지나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
질문드립니다.
강의중에 궁금한게 생겨서 질문남깁니다. 현재 3년동안 개발을 하면서 ConcurrentHashMap을 사용하지 않고 모든코드를 HashMap으로 처리하였습니다. 물론 실제 고객들이 사용하는 서비스개발 회사가 아니라 주로 금융권 SI프로젝트들 중에서도 고객내부직원들이 쓰는 업무를 주로 개발해서 트래픽이 많이 몰리진 않았거든요. 제가 경험했던 프로젝트들이 여러개의 쓰레드가 접근하지 않아서 HashMap으로도 무리없이 프로젝트가 진행되었던 걸로 생각하면 될까요?? 반대로 트래픽이 몰리는 서비스개발회사에서는 ConcurrentHashMap을 사용하면 되는건가요??
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스태틱 클래스 이런식으로 만들어도 되나요?
미리 사용할 정보들 미리 저장해둔다는건 맨날 생각만 해보고 해보진 않아서 강의듣고 억지로 만들어 보았습니다. 이런식으로 만들어도 문제가 없을까요? 작동은 잘되는거 같습니다. @Data@AllArgsConstructorpublic class DeliveryCode { private String code; private String displayName; public static class DeliveryCodes{ private static List<DeliveryCode> deliveryCodes = new ArrayList<>(); static { deliveryCodes.add(new DeliveryCode("FAST", "빠른 배송")); deliveryCodes.add(new DeliveryCode("NORMAL", "일반 배송")); deliveryCodes.add(new DeliveryCode("SLOW", "느린 배송")); } public static List<DeliveryCode> getDeliveryCodes() { return deliveryCodes; } }}
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
체크여부에 관계 없이 value값이 항상 true로 되어 있는 이유가 궁금합니다.
로그를 찍어보니까 체크를 해제하면 false로 들어오는게 보이는데 페이지 소스를 보면 value가 항상 true로 되어 있더라구요. <input type="checkbox" id="open" class="form-check-input" disabled name="open" value="true" /> html상에서 checked가 있느냐 없느냐에 따라 체크 여부를 렌더링하는 것까지는 이해했는데 true라는 값이 어디에서 나오는 것인지 궁금합니다. (1) 체크가 되면 open: true 전송 (2) 체크가 안되면 open값 자체가 전송이 안되니 value가 true여도 문제없음 이기 때문에 서버에 있는 value값을 무시하고 value="true"를 디폴트값으로 렌더링하면서 서버상의 true, false값은 checked 태그로만 확인하는 건가요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
item.getOpen()이 안되는 경우
혹시 저와 같은 문제를 겪으실 분들을 위해 제가 잠깐동안 삽질한 경험을 남깁니다. 강의를 쭉 듣던 도중에 로그를 찍는데 item.getOpen()이 안되는 상황을 겪었습니다. 그런데 item.setOpen()은 됐거든요. 찾아보니까 문제는 Item 클래스에서 open을 primitive타입인 boolean으로 선언했기 때문이었습니다. 롬복으로 게터세터를 적용할 경우 primitive boolean의 게터명명규칙이 getSomething이 아니라 isSomething입니다. 따라서 item.isOpen()을 입력해야 에러가 없습니다. 그럼 어떻게 영한님은 isOpen이 아니라 getOpen이 되었는가? 다시 잘 살펴보니 boolean이 아니라 참조형인 Boolean을 사용하셨습니다....ㅜ null값 때문인 것 같습니다. 참조형이니까 롬복이 getOpen을 생성합니다. 생각없이 따라치다가 이런 일을 겪네요. 집중해서 열심히 듣겠습니다. 혹시 이 글을 보게된 여러분 화이팅..
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
th:action
이 부분을 생략안하고 사용하면 상품등록 버튼을 클릭하면 500에러가 나오는데, 왜 그런지 알 수 있을까요? 그림의 빨간색박스 부분도 th:action을 생략했을 때와, 생략하지 않았을 때 동일합니다.ㅠㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
템플릿에서 SpringBean 조회
안녕하세요 강사님 Thymeleaf 엔진이 Bean에 접근할수 있게 해주는 기능을 만든 이유가 타임리프 개발팀이 실무에서 자주쓴다고 판단했거나, 개발자들의 요청에 의해 만들어졌다고 생각하는데요!실제로 템플릿엔진이 직접 등록한 Bean에 접근해서무언가를 액션하는 시나리오가 어떤게 있을까요 ? (MVC 2편 알림보고 바로 구매해서 주행중입니다. 늘감사합니다)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
어쩐 이유에선지 8080포트가 사용중이라 실행이 안됩니다..ㅠ
계속 8080포트가 사용중이라 에러 메시지가 떠서 따로 cmd에서 포트 번호 확인해봤는데 8080포트는 나오지도 않습니다... 왜 이러는지 모르겠습니다...
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
새로고침 말고 뒤로가기를 누르면 어떻게 되나요?
새로고침 문제를 PRG 패턴으로 해결했어도 뒤로가기 버튼을 누르면 '전의 전'의 요청을 다시하는가 싶어서 눌러보았습니다. 그랬더니 get 요청처리되어서 상품 등록 폼이 나왔습니다. 그래서 상품이 중복 등록되진 않는 것 같은데 '전의 전'에 사용한 'get method' 요청을 다시 보낸다고 이해하면 될까요? 전의 전 요청이 post 요청이면 건너띄고 전의 전 get 요청을 찾아서 보내는 거라고 이해했습니다. 뒤로가기에 대해서 제가 제대로 이해한 건지 잘 모르겠습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의를 듣다가 문득 드는생각입니다.
안녕하세요 이번 강의를 듣다가 문득 드는생각에 질문드립니다. SpringMVC패턴을 너무 깊숙히 알지 않아도 괜찮은건가요? 대충 큰 그림만 알아도 되는건지 궁금합니다. 너무 깊게 들어가면 한도 끝도 없는것 같아서요 ㅠㅠ 그리고 알아야한다면 이번 강의에서 코드하나하나보다는 흐름정도만 알면 되겠죠?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
layout dialect는 사용하지 않는 편인가요?
저는 thymeleaf layout dialect 가 layout 기능인 줄 알았는데 이게 layout 이었군요. layout dialect를 사용할 때도 있으신가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Interface와 Abstract class 의 차이점
안녕하세요, 강의 잘 듣고 있습니다. 강의에서 이끌어 주시는대로 따라가다가 생각을 해봤습니다. - ControllerV1 은 추상적 형태이고, MemberFormControllerV1. MemberSaveControllerV1, MemberListControllerV1 는 구체적 형태이다. - 추상적 형태를 나타내는 방법에는 Interface와 Abstract class 가 존재한다. 아래와 같은 의문이 들었습니다. - 현재 상황에서 Abstract class 를 사용하지 않고 Interface 를 사용한 이유가 뭔가요? - 만약 Interface 를 사용한 특별한 이유가 있다면, 어떤 상황에서 Abstract class 또는 Interface 를 선택하는게 옳을까, 판단하는 근거를 간략하게나마 말씀해주시면 감사하겠습니다. 좋은 하루 되세요 !
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberConroller에서 생성자를 통한 의존성 주입시 멤버 변수에 final 키워드를 사용하는 이유에 대한 질문입니다.
안녕하세요. 김영한 팀장님. '컴포넌트 스캔과 자동 의존관계 설정' 강의 02:35 쯤 'MemberConroller' 클래스의 멤버변수로 'MemberService' 타입의 멤버변수를 선언할 때 final 키워드를 설정한 이유에 대한 질문입니다. Java에서 final 키워드가 붙은 멤버변수는 쉽게 말해 '변할 수 없다.' 라는 의미를 가지게 됩니다. 저는 스프링에서 다루는 Bean은 '특별한 설정 설정(Scope)'이 없는 경우 싱글톤 형태로 스프링 컨테이너에 등록되어 상황에 따라 다른 클래스의 의존 주입 객체로 사용할 수 있는 것으로 이해하고 있습니다. 이러한 이유로 현재 MemberController에서는 Setter 메소드도 선언되지 않았으니 생성자를 통한 의존 주입 이후에는 MemberService 타입의 멤버변수가 변경될 가능성이 없다고 보아 final 키워드를 사용하지 않아도 되지 않을까? 하는 의문이 들었습니다. 그럼에도 불구하고 final 키워드를 사용한 이유가 궁금합니다! 미리 답변 감사드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
index.html문의
무료강의인 스프링 입문강의를 들었을때, 강사님께서 매핑되는 html화면이 없을경우에는 resource -> static -> index.html을 자동으로 찾아서 화면에 띄어준다고 하셨는데요 꼭 resource -> static 안에 없어도 되는건가요? 이번 강의에서는 main -> webapp -> index.html경로에 있는데 welcome페이지로 index.html이 동작하길레요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
쓰레드 풀 질문드립니다.
실제 HTTP요청에 의해 많은 트래픽이 발생할 경우 쓰레드풀의 있는 쓰레드의 숫자를 상황에 맞추어서 증가시켜주면 된다고 강의해주셨는데요 제가 아직 그런부분을 다뤄본 경험이 없어서 질문드립니다. 인터넷을 찾아보니 쓰레드풀의 최대갯수를 늘리는 방법이 ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); taskExecutor.setMaxPoolSize(10); taskExecutor.setQueueCapacity(10); 이렇게 나오던데 실무에서도 이런식으로 setMaxPoolSize를 통해서 쓰레드의 수를 증가 시키고 setQueueCapacity를 통해 대기하는 쓰레드의 수를 정하나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jdk 1.8로 하면 문제가 없는데
안녕하세요 매번 격는 문제여서 질문합니다. 다른 project에서 jdk1.8로 사용을 하고 있고 JAVA_HOME도 1.8로 설정을 했을 경우 인텔리제이에 설정은 jdk11모두 설정을 했는데 ㅜ jdk11을 사용하는데 이러한 에러가 나와요 Execution failed for task ':compileJava'. > invalid source release: 11 jdk를 여러 버전을 각각의 프로젝트 마다 달리 사용할려면 설정을 어떻게 해야 하는지요