묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
콘솔창 색깔 바꾸는 방법
콘솔창 글씨가 다 흰색이니까 구분이 잘안가서 강사님처럼 바꾸고 싶어서 찾아봤습니다 프로젝트에 application.properties 파일을 사용하시면 이렇게 입력해주시고 서버를 재시작하면 적용됩니다 복붙-> spring.output.ansi.enabled=ALWAYS 프로젝트에 application.yml 파일을 사용하시면 (yml 파일은 띄어쓰기 주의) 이렇게 입력해주시고 서버를 재시작하면 이렇게 글자색이 바뀐채로 출력됩니다 프로젝트마다 application 파일에 코드 복붙하는게 귀찮을거 같아서 찾아본 결과 VM Options에서 -Dspring.output.ansi.enabled=ALWAYS 를 추가해주면 인텔리제이를 실행 했을 때 전체 프로젝트에 적용이 된다고 하는데 전 아무리 해도 적용이 안돼서 포기했습니다 혹시 전체 프로젝트에 적용하는 방법을 아시는분이 계시면 댓글로 알려주시면 감사하겠습니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Json 매핑
Json 객체 매핑 시 setter가 없어도 되는데 http 요청 데이터 - API 메시지 바디 - JSON에서는 setter가 있어야 한다고 하셨는데 어떤게 맞는 걸까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
PrintWriter writer = response.getWriter();
이 코드가, response 객체 안에 Writer를 담당하는 객체가 또 있고 그 객체를 writer라는 변수로 따로 저장해서 writer를 이용하는 방식인가요? 생소한 패턴이라서 헷갈리네요.. 혹시 response 객체가 어떻게 구성돼 있는지 확인할 수 있는 방법이 있을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서버가 계속해서 작동되지않습니다
위에 사진과 같이 톰캣서버가 계속해서 작동을하여야하는데 종료가되는거같습니다 ㅠㅠ 해결방법이있을까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
static root 실제 저장 위치
안녕하세요. start.spring.io 를 통해 생성한 프로젝트에는 resources/static 폴더가 존재하는데, 강의에서는 따로 webapp 폴더를 만들어 그곳에 html 파일을 담는데요. resources/static/index.html과 webapp/index.html 을 2 개 모두 만들어 두고, URL=/ 로 접근해 보면 후자가 뜨는 것은 테스트를 통해 확인할 수 있었습니다. webapp/index.html 이 없으면 URL=/ 에 대응해 전자의 페이지가 뜹니다. 즉, webapp이 더 우선하는 것으로 생각됩니다. 질문은 : resources/static 영역이 있는데 강의에서는 왜 굳이 이와 같이 webapp을 따로 만들어 그곳에 html 파일들을 구성하신 것인지요? 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
new-form.jsp 요청시 jsp파일 자체가 다운로드 되어버립니다
이 전까지의 강의는 아무런 문제가 없다가 이번 편에서 아래처럼 URL을 요청했더니 /jsp/members/save.jsp 화면으로 넘어가지 않고 스크린샷 하단에 보시다시피 jsp파일 자체가 다운로드되어버립니다.. 구글링을 해봤는데도 마땅히 해결방법을 모르겠어서 질문남깁니다. 혹시 해결책을 아신다면 답변 부탁드리겠습니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
컨텍스트 스위칭 질문
요청 마다 매번 쓰레드를 생성하는 방식의 단점 중 하나로 컨텍스트 스위칭 비용을 말씀하셨는데요. 컨텍스트 스위칭은 쓰레드 풀을 사용하더라도 똑같이 발생하는 비용 아닌가요? 쓰레드를 미리 만들어 놓는다고 cpu가 다른 스레드로 갈아탈(?) 때 컨텍스트 스위칭이 일어나지 않는 것은 아틸 텐데요. 답변 부탁드립니다. 감사합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요.
안녕하세요, 먼저 정말 기다리던 강의를 드디어 볼 수 있게돼서 감사하다는 말씀을 드립니다! 강의를 따라가던 중 문제가 발생하여 조언을 구하고자 질문을 드립니다. 김영한 팀장님의 기존 인강에서는 [Settings] -> [Build Tools] -> [Gradle] 에서 Build and run using / Run tests using 모두 'IntelliJ IDEA'로 설정 후 강의를 진행하셔서 저도 그렇게 강의를 모두 수강했고 현재 혼자 개발 중인 서비스도 'IntelliJ IDEA' 로 설정해서 진행 중입니다. 이번 스프링 MVC 1편 인강에서는 섹션2 - 프로젝트 생성에서부터 Build and run using 을 'IntelliJ IDEA' 로 설정하면 다음과 같은 에러가 발생하고, Run tests Using 을 'GRADLE'로 설정하면 또 다음과 같은 에러가 발생합니다. [Build and run using - 'IntelliJ IDEA' 설정 후 Application Run 한 상황 ] 2021-03-15 11:16:43.740 INFO 12576 --- [ main] travelbeeee.sec02.Sec02Application : Starting Sec02Application using Java 14.0.2 on DESKTOP-SJ3E1UQ with PID 12576 (C:\Users\HyunSeok\Desktop\studyWithMe\gitHub\studyWithMe\스프링MVC1편\sec02\out\production\classes started by HyunSeok in C:\Users\HyunSeok\Desktop\studyWithMe\gitHub\studyWithMe\스프링MVC1편\sec02) 2021-03-15 11:16:43.744 INFO 12576 --- [ main] travelbeeee.sec02.Sec02Application : No active profile set, falling back to default profiles: default 2021-03-15 11:16:44.376 WARN 12576 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet 2021-03-15 11:16:44.385 INFO 12576 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2021-03-15 11:16:44.406 ERROR 12576 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:196) ~[spring-context-5.3.4.jar:5.3.4] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:745) ~[spring-context-5.3.4.jar:5.3.4] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:563) ~[spring-context-5.3.4.jar:5.3.4] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) ~[spring-boot-2.4.3.jar:2.4.3] at travelbeeee.sec02.Sec02Application.main(Sec02Application.java:13) ~[classes/:na] Caused by: java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.boot.web.servlet.WebServletHandler.<init>(WebServletHandler.java:39) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.web.servlet.ServletComponentRegisteringPostProcessor.<clinit>(ServletComponentRegisteringPostProcessor.java:49) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.web.servlet.ServletComponentScanRegistrar$ServletComponentRegisteringPostProcessorBeanDefinition.lambda$getInstanceSupplier$0(ServletComponentScanRegistrar.java:94) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1231) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.4.jar:5.3.4] ... 14 common frames omitted Caused by: java.lang.ClassNotFoundException: javax.servlet.annotation.WebServlet at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na] ... 21 common frames omitted Process finished with exit code 1 [ Run tests Using 을 Gradle로 설정 후 Test 를 빌드한 상황 ] > Task :compileJava UP-TO-DATE > Task :processResources UP-TO-DATE > Task :classes UP-TO-DATE > Task :compileTestJava UP-TO-DATE > Task :processTestResources NO-SOURCE > Task :testClasses UP-TO-DATE > Task :test FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Users/HyunSeok/Desktop/studyWithMe/gitHub/studyWithMe/스프링MVC1편/sec02/build/reports/tests/test/index.html * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 1s 4 actionable tasks: 1 executed, 3 up-to-date 설정을 아래 사진과 같이 바꿔주면 문제가 없어서 당장 수업을 듣는데는 지장이 없지만, 구글링을 해봐도 이유를 알아내기 어려워 조언을 구하고자 질문을 남깁니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
JSON 형태로 리턴할 때 질문
HelloData 같은 경우는 username과 age 라는 2개의 데이터를 가지고 있어서, dto를 만들어서 반환하는게 맞지만 만약 한 개의 데이터를 json 형식으로 리턴하고 싶을 때는 어떻게 하나요?? 예를들어 username만 리턴하고 싶은 경우에 dto를 만드는 것은 비용적으로 아깝다고 생각이 들어서요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Test method 접근제어자 질문드립니다.
안녕하세요. 강의를 듣던 중 테스트 메소드 접근 제어자에 궁금한점이 생겨서 질문드립니다. [회원 리포지토리 테스트] @Test public void save() { ... } [서비스 테스트] @Test void join() { ... } 이전 회원 리포지토리 테스트 코드에서는 위 코드와 같이 public로 선언했었지만, 이번 강의에서 Create Test 단축키로 생성한 테스트 메소드들은 public가 아닌 default로 선언되었습니다. default로 메소드를 선언했을 때 테스트를 수행하는데 문제가 없었는데 강의 코드에서 public으로 메소드를 선언하는 이유는 무엇인가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Optional 사용 방법에 대해서 질문드립니다.
1) Optional<Member> result = memberRepository.findByName(member.getName()); 2) Member result = memberRepository.findByName(member.getName()).get(); 1. 위 코드에서 2번의 방법보다 1번 같은 사용법을 권장한다고 하셨습니다. 1) memberRepository.findByName(member.getName()) .ifPresent( m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); 2) Optional<Member> result = memberRepository.findByName(member.getName()); result.ifPresent( m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); 2. 또한 바로 위의 코드에서도 2번의 방법보다 1번의 방법 사용을 권장한다고 말씀하셨습니다. 위 방법들이 권장되는 이유가 궁금합니다. 또 권장되는 Optional 사용법 같은게 따로 문서로 존재하는건가요?
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
[공유] 스프링 form, spring 태그 500 오류
질문게시판을 보니 6달 전에도 저와 같은 문제를 겪으신 분이 있었네요. 제가 겪은 오류는 taglib prefix="form"과 taglib prefix="spring" 사용 시 500 오류가 발생하는 것이었습니다. 인터넷을 일주일을 검색하며 왠만한 여러가지 방법들은 전부 시도해본 것 같습니다. 그래도 해결이 안되었습니다. -------------오류 내용--------------------------- 절대 URI인 [http://www.springframework.org/tags/form]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. 절대 URI인 [http://www.springframework.org/tags]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. --------------------------------------------------------------- 보고 또 보았던 오류메세지를 보던 중 문득 'Maven dependencies엔 필요한 jar 파일들이 다 다운로드가 된 것 같은데..., 다 있는데 왜 못 찾는다는 걸까' 하는 생각이 들어 WEB-INF 폴더 하위 lib 폴더 안에 spring webmvc jar 파일을 직접 넣었습니다. 또는 tomcat이 설치된 경로의 lib에 spring webmvc jar 파일을 넣으면 WEB-INF/lib 에 넣지 않아도 잘 실행이 됩니다. 저같은 경우는 이 방법으로 오류가 해결되었습니다. 아직도 이전에 오류가 왜 발생했는지 모르겠고 이렇게 하니까 왜 되는지 모르지만 같은 오류로 고생하시는 분이 있을까 하여 공유드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
오류 관련해서 질문드립니다.
HelloServlet을 만들고 처음 실행 후 다음과 같은 에러가 나옵니다. 어떻게 해야될지 모르겠어서 질문드립니다. ㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿과 서블릿 컨테이너의 역할에 대한 질문입니다.
강의자료 8p에서 WAS에서 HTTP 요청 메세지를 기반으로 request 와 response 객체를 생성해서 서블릿에게 전달한다는 그림이 있는데 강의자료 12p의 HttpServletRequest의 역할에 보면 서블릿이 HTTP 요청 메세지를 파싱하여 HttpServletRequest에 담에서 제공한다고 되어있습니다. 이부분에서 정확히 HTTP 요청 메세지 파싱과 request 와 response 객체의 생성에 대한 책임이 WAS에 있는지 서블릿에 있는지 애매모호해서 질문드립니다!
-
해결됨스프링 웹 MVC
스프링 부트 사용시 WebMvcConfigurerSupport 클래스
항상 좋은강의 감사드립니다! spring-boot-web-starter 를 사용하면 추이적으로 JacksonJSON2 의존성이 추가되고 WebMvcConfigurerSupport 에 클래스패스에 HTTP 메세지 컨버터 관련 의존성이 있으면, DispathcerServlet 이 사용할 HTTP 메세지 컨버터로 추가해주는 기능이 구현되어 있음으로, 부트를 사용하면 추가적인 설정없이도 JacksonJSON2 HTTP 메세지 컨버터를 사용할 수 있다고 이해했습니다. 그리고, 앞선 강의에서 스프링 부트가 제공하는 자동설정을 사용하기 위한 조건에는 WebMvcConfigurerSupport 타입의 클래스가 빈으로 등록되어있지 않아야하는 조건이 있는것을 확인했습니다. 그렇다면 JacksonJSON2 HTTP 메세지 컨버터를 등록할 때 WebMvcConfigurerSupport를 사용하긴하지만 빈으로 등록하지 않고 사용하는 것이라고 이해하면 될까요? 감사합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Autowired 질문드립니다.
안녕하세요 ^^ 항상 강의 감사하게 듣고 있습니다! @Autowired public MemberController(MemberServcie service) {} 생성자 방식으로 주입할때 생성자 함수위에 autorwired를 생략해도 동작하던데 실무에서는 생략을 많이 하나요? 그리고 생략을 한다면 설명을 위해서 작성을 하신건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thymeleaf가 URI is not registered가 뜹니다
thymeleaf가 URI is not registered가 뜹니다 스프링부트 생성 때 의존성추가 했고 마켓플레이스에서는 thymeleaf를 검색해도 나오지 않는데 무엇을 잘못했을까요?ㅠㅠ 스프링은 2.4.3 자바 11입니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@repository에 관하여
안녕하세요 @Repository가 MemberRepository를 구현한 MemoryMemberRepository에 붙어있는데요 만약 MemberRepository를 구현한 DBMemberRepository라는 클래스가 하나 더있고 여기에도 @Repository가 붙어있다면 MemberService에서는 어떤 Repository를 주입시켜주나요? 읽어주셔서감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Autowired순서
안녕하세요 강의를 듣던 중 궁금한점이 생겨 질문드리게되었습니다. MemberService에서 @Autowired 를 통해 MemberRepository를 주입시키는 과정에서 MemberRepository가 MemberService 보다 먼저 빈등록이 되어있다면 문제가 없겠지만 MemberRepository가 MemberService 보다 늦게 빈등록이 될경우 문제가 생길것 같은데 어떻게 작동하나요? 즉, 빈등록되는 순서가 궁금합니다. 읽어주셔서 감사합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요 강사님
안녕하세요 강사님 질문있습니다. 강의 목록 중에 "실전! 스프링 웹 MVC 출시 예정 - 2월" 인 부분이 있는데 언제 나오는지 알 수 있을까요??