묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
BasicErrorController 질문있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]BasicErrorController 질문있습니다.저희가 직접만든 ErrorPageController 의 경우 오류 코드에 따라 맵핑되는 uri가 달라 각각 코드에 따라 다른 viewName을 리턴하여 각각 다른 화면을 보여주는 것이 가능해 보입니다.@Slf4j @Controller public class ErrorPageController { public static final String ERROR_EXCEPTION = "jakarta.servlet.error.exception"; public static final String ERROR_EXCEPTION_TYPE = "jakarta.servlet.error.exception_type"; public static final String ERROR_MESSAGE = "jakarta.servlet.error.message"; public static final String ERROR_REQUEST_URI = "jakarta.servlet.error.request_uri"; public static final String ERROR_SERVLET_NAME = "jakarta.servlet.error.servlet_name"; public static final String ERROR_STATUS_CODE = "jakarta.servlet.error.status_code"; @RequestMapping("/error-page/404") public String errorPage404(HttpServletRequest request, HttpServletResponse response) { log.info("error-page404"); printErr(request); return "error-page/404"; } @RequestMapping(value = "error-page/500", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Map<String, Object>> errorPage500api( HttpServletRequest request, HttpServletResponse response) { log.info("API errorPage500"); Map<String, Object> result = new HashMap<>(); Exception ex = (Exception) request.getAttribute(ERROR_EXCEPTION); result.put("status", request.getAttribute(ERROR_STATUS_CODE)); result.put("message", ex.getMessage()); Integer statusCode = (Integer) request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE); return new ResponseEntity<>(result, HttpStatus.valueOf(statusCode)); } @RequestMapping("/error-page/500") public String errorPage500(HttpServletRequest request, HttpServletResponse response) { log.info("error-page500"); printErr(request); return "error-page/500"; } public void printErr(HttpServletRequest request) { log.info("ERROR_EXCEPTION : {}", request.getAttribute(ERROR_EXCEPTION)); log.info("ERROR_EXCEPTION_TYPE : {}", request.getAttribute(ERROR_EXCEPTION_TYPE)); log.info("ERROR_MESSAGE : {}", request.getAttribute(ERROR_MESSAGE)); log.info("ERROR_REQUEST_URI : {}", request.getAttribute(ERROR_REQUEST_URI)); log.info("ERROR_SERVLET_NAME : {}", request.getAttribute(ERROR_SERVLET_NAME)); log.info("ERROR_STATUS_CODE : {}", request.getAttribute(ERROR_STATUS_CODE)); log.info("dispatcherType = {}", request.getDispatcherType()); } } 하지만 BasicErrorController의 어떤 errorCode가 오더라도 전부 /error로 매핑이 되어 반환값도 viewName이 아니라 ModelAndView이어 이해해 약간의 어려움을 겪고 있습니다.일단 제가 추상적으로 생각했을때 BasicErrorController의 errorHtml에서 반환받는 ModelAndView를 Servlet에서 받아 ModelAndView에 있는 "error"라고 하는 viewName을 directory 이름 으로 사용하고 model에 들어있는 status를 조합하여 RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath+"/"+model.getAttribute("status");이런느낌의 로직으로 처리한다 라고 이해하면 제대로 이해하고 있는게 맞을까요??? 추상적으로 이런 느낌이겠지정도고 확신이 들지 않아 질문합니다. @Controller @RequestMapping({"${server.error.path:${error.path:/error}}"}) public class BasicErrorController extends AbstractErrorController { private final ErrorProperties errorProperties; public BasicErrorController(ErrorAttributes errorAttributes, ErrorProperties errorProperties) { this(errorAttributes, errorProperties, Collections.emptyList()); } public BasicErrorController(ErrorAttributes errorAttributes, ErrorProperties errorProperties, List<ErrorViewResolver> errorViewResolvers) { super(errorAttributes, errorViewResolvers); Assert.notNull(errorProperties, "ErrorProperties must not be null"); this.errorProperties = errorProperties; } @RequestMapping( produces = {"text/html"} ) public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) { HttpStatus status = this.getStatus(request); Map<String, Object> model = Collections.unmodifiableMap(this.getErrorAttributes(request, this.getErrorAttributeOptions(request, MediaType.TEXT_HTML))); response.setStatus(status.value()); ModelAndView modelAndView = this.resolveErrorView(request, response, status, model); return modelAndView != null ? modelAndView : new ModelAndView("error", model); } @RequestMapping public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) { HttpStatus status = this.getStatus(request); if (status == HttpStatus.NO_CONTENT) { return new ResponseEntity(status); } else { Map<String, Object> body = this.getErrorAttributes(request, this.getErrorAttributeOptions(request, MediaType.ALL)); return new ResponseEntity(body, status); } } //생략
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
일대 다 컬렉션 페치조인에서의 @Batchsize의 동작과정을 제대로 이해한 것이 맞는 지 궁금합니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]총 4개의 Order가 있고, 다음과 같이 xToOne연관관계를 가진 Member와 Delivery까지 페치조인해서 가져온 상황입니다.여기서 Batchsize가 2라고 가정하고, Order를 순차적으로 돌아가면서 OrderItems에 접근하게 된다면, 다음 그림과 같이 orderItems가 로딩이 되는 것인가요? order.stream().forEach(o -> o.getOrderItems().getPrice())(첫 번째)Batchsize가 2이므로 첫 두 Order에 대한 orderItems 로딩(두 번째)Batchsize가 2이므로 그 다음 두 개의 Order에 대한 orderItems 로딩
-
미해결스프링 부트 - 핵심 원리와 활용
톰캣 설치가 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]sec2 -1에 톰캣 설치 강의를 보면서 따라하는 중입니다.강의에서 알려주신 방법, 질문창, 구글 다 참고해서 해봤는데요어떻게 해도 톰캣 설치가 안되고 오류만 뜹니다.해결방법 좀 알려주셨으면 좋겠습니다. <오류 코드>startup.bat : 'startup.bat' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.위치 줄:1 문자:1+ startup.bat+ ~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (startup.bat:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
-
미해결스프링 핵심 원리 - 기본편
Autowired에 빨간불
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]@Autowired에 빨간불이 뜨면서 에러가 뜨는데 이유가 뭘까요?? Autowired members must be defined in valid Spring bean (@Component|@Service|...) package hello.core.scope; import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Scope; import static org.assertj.core.api.Assertions.assertThat; public class SingletonWithPrototypeTest1 { @Test void prototypeFind() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(PrototypeBean.class); PrototypeBean prototypeBean1 = ac.getBean(PrototypeBean.class); prototypeBean1.addCount(); assertThat(prototypeBean1.getCount()).isEqualTo(1); PrototypeBean prototypeBean2 = ac.getBean(PrototypeBean.class); prototypeBean2.addCount(); assertThat(prototypeBean2.getCount()).isEqualTo(1); } @Test void SingletonClientUsePrototype() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class); ClientBean clientBean1 = ac.getBean(ClientBean.class); int count1 = clientBean1.logic(); assertThat(count1).isEqualTo(1); ClientBean clientBean2 = ac.getBean(ClientBean.class); int count2 = clientBean2.logic(); assertThat(count2).isEqualTo(2); } @Scope("singleton") static class ClientBean { private final PrototypeBean prototypeBean; @Autowired public ClientBean(PrototypeBean prototypeBean) { this.prototypeBean = prototypeBean; } public int logic() { prototypeBean.addCount(); return prototypeBean.getCount(); } } @Scope("prototype") static class PrototypeBean { private int count = 0; public void addCount() { count++; } public int getCount() { return count; } @PostConstruct public void init() { System.out.println("PrototypeBean.init " + this); } @PreDestroy public void destroy() { System.out.println("PrototypeBean.destroy"); } } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2.sh 실행이 되질 않습니다.
안녕하세요. 터미널에서 h2.sh이 안됩니다. h2w.bat을 직접 열어서 연결을 누르면이런 화면이 나오긴 합니다.java --version 화면입니다.H2환경 별수 설정 화면입니다.h2.sh를 폴더에서 더블클릭해서 실행시키면명령프롬프트 창이 뜨면서 Error: Could not find or load main class org.h2.tools.ConsoleCaused by: java.lang.ClassNotFoundException: org.h2.tools.Console라고 잠깐 뜨고 창이 닫힙니다. 홈에는 test.mv.db파일 있습니다. 어떻게 하면 될까요?
-
해결됨스프링 핵심 원리 - 기본편
coreApplicationTests
coreApplicationTests를 실행하면 밑에 WARNING이라고 뜨는데 이거는 어떻게 처리해야하나요??ㅠㅠ뭔가 문제가 있는건가요.. 13:31:52.196 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [hello.core.CoreApplicationTests]: CoreApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.13:31:52.288 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration hello.core.CoreApplication for test class hello.core.CoreApplicationTests . ____ _ /\\ / ___'_ __ (_)_ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.3.0)2024-05-30T13:31:52.657+09:00 INFO 27976 --- [core] [ main] hello.core.CoreApplicationTests : Starting CoreApplicationTests using Java 21.0.3 with PID 27976 (started by IDEAPAD in E:\study\core)2024-05-30T13:31:52.658+09:00 INFO 27976 --- [core] [ main] hello.core.CoreApplicationTests : No active profile set, falling back to 1 default profile: "default"2024-05-30T13:31:53.068+09:00 INFO 27976 --- [core] [ main] hello.core.CoreApplicationTests : Started CoreApplicationTests in 0.645 seconds (process running for 1.512)WARNING: A Java agent has been loaded dynamically (C:\Users\IDEAPAD\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.14.16\4a451ee6484abac3a498df0f3b33ed00a6fced4d\byte-buddy-agent-1.14.16.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future releaseOpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appendedProcess finished with exit code 0
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
mybatis 적용 문제
[질문 내용]여기에 질문 내용을 남겨주세요.https://drive.google.com/drive/folders/1-OMPceoH7sl_mkET-FmLH2xDZXuGfo4dmybatis를 적용시키고 ItemRepositoryTest를 실행시켰는데 오류 로그가 많이 떠서 무슨 문제인지 정확히 판단이 안되네요...일단 mybatis 관련 파일들은 제대로 쓴것같긴한데 오류가 생긴걸 보면 mybatis 적용이 안된것같은데 어디서 잘못되었는지 모르겠습니다
-
미해결스프링 핵심 원리 - 기본편
전체 테스트시 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]전체 테스트시 CoreApplicationTests에서 이런 오류가 발생합니다!! java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@24db6ce testClass = hello.core.CoreApplicationTests, locations = [], classes = [hello.core.CoreApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@56bc3fac, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@37ff4054, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@74cf8b28, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@718607eb, org.springframework.boot.test.context.SpringBootTestAnnotation@7d85fe52], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:142) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:98) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) at java.base/java.util.Optional.orElseGet(Optional.java:364) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [/Users/kimcheoljun/Desktop/CODING/BE/spring/core/out/production/classes/hello/core/member/MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1355) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1192) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:962) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1454) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:553) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152) ... 17 moreCaused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:218) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1420) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 41 more
-
미해결스프링 부트 - 핵심 원리와 활용
http://localhost:8080/test 와 catalina.out 에 다른 문자를 찍히게 하고 싶어요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]System.out.println("Hello"); resp.getWriter().println("Hi");위와 같이 브라우저와 로그에 다르게 찍히는걸 보고 싶은데 코드 수정후 톰캣 재시작을 해도 여전히 로그에는 TestServlet.service이, 브라우저에는 test가 찍힙니다. war을 삭제 후 다시 시작해도 같아요.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
Mysql 연결 부분 오류
spring: datasource: url: "jdbc:mysql://localhost/library" username: "root" password: "비밀번호" driver-class-name: com.mysql.cj.jdbc.Driver위와 같이 application.yml 파일을 작성했는데, 사용자 등록을 하면 서버 내부 오류라고 뜨면서 아무것도 안되더라구요.개발자 도구로도 봤는데 뭐가 문제인지 잘 모르겠어서 구글을 찾아보다가 jpa: database: mysql hibernate.ddl-auto: update show-sql: trueapplication.yml 파일에 추가로 이걸 입력하니까 정상적으로 작동하네요.. 혹시 이렇게 두고 실행해도 괜찮은건지 여쭤보고싶었습니다!
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
try catch
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]다름이 아니라 try-with-resources 사용하면 자원이 끊길 때 알아서 close() 호출해주니까 JdbcUtils로 닫을 필요없이 try-with-resources 사용하면되지 않나요?!try ( Connection con = getConnection(); PreparedStatement pstmt = con.prepareStatement(sql)) { pstmt.setString(1,memberId); int resultSize = pstmt.executeUpdate(); log.info("resultSize={}", resultSize); } catch (SQLException e) { log.error("db error",e); throw e; }
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 cmd에서 서버 실행이후 서버종료 방법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 강의 중반에 bulid한 이후 맥 환경에서 서버 종료하는 방법은 알려주셨는데 혹시 윈도우 환경에서는 서버를 종료하는 방법이 있는지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
강의 테스트 오류내용 질문 / 소스코드 있음
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용][소스코드]https://drive.google.com/drive/folders/12UKQ6SBa5fZeSdpWkr36EDpLkZtXad4t?usp=sharing 강의를 듣는데 @Autowired 어노테이션에서 같은 타입이 2개이상 조회된 경우 필드명을 동일하게 해주면 해당 필드명에 맞는 빈을 주입한다고 했는데 빈이 적용되지 않는 오류가 납니다.. ㅠㅠ 테스트 코드를 아무리 돌려봐도 안되네요. 도와주세요!또한 rateDiscountPolicy로 바꿔도 강사님과는 다르게 전체 테스트를 돌려보았을 때 xml은 성공적으로 수행하는 모습입니다. 이것도 왜 그런지 잘 모르겠습니다.앞전 강의에서 전체 테스트를 돌렸을 때 CoreApplicationTests 에서 에러가 났는데, 여기서도 에러가 해결되지 않아 CoreApplication에 컴포넌트 스캔 및 excludeFilters 를 달아서 해결하였는데 이것도 왜 안되었던건지 궁금합니다.!!전체 테스트를 돌렸을 때 총 3개가 에러가 나는데 basicSacn 뿐 아니라 나머지 2개가 왜 에러나는지도 해결 부탁드리고 싶습니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
messages.properties 한글이 왜 깨짐 ?
[질문 내용]settings에 encoding 드가서 UTF-8로 다 설정도 해줬는데 왜 자꾸 안녕 -> ?? 로 인식이됨?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
파일 업로드
안녕하세요.다른 질문글들을 다 참고하여 따라 해보았으나 업로드가 되지 않아 질문 남기게 되었습니다.[질문 내용]한글 주소로 사용하지 않기 위해 로컬디스크 C에 file을 만들어 진행하였는데 사진과 같은 오류가 발생합니다. (노랗게 칠한부분은 한글로 제이름입니다.) [구글 드라이브 주소]https://drive.google.com/file/d/1VW52xdG7KyWdewGShZijEcJjhXc2v_4w/view?usp=sharing
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 처리하기 - 세션 직접 만들기 관련 추가 질문입니다.
https://www.inflearn.com/questions/1277199/%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0-%EC%84%B8%EC%85%98-%EC%A7%81%EC%A0%91-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8%EC%9E%85%EB%8B%88%EB%8B%A4 질문에 대해서세션은 서버에 저장되고, 쿠키는 클라이언트에 저장된다는걸 깜빡했네요....추가질문입니다.서로 다른 프로그렘들이 SESSION_COOKIE_NAME 을 동일하게 사용한다면 중복으로 인한 문제가 발생하겠네요? 그렇다면 이를 회피하기 위한 방법도 있나요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
트랜잭션을 리포지토리가 아닌 서비스계층에 적용하는 이유가 궁금합니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.왜 서비스에 트랜잭션을 적용하냐는 다른 분의 질문에 하나의 트랜잭션으로 묶어서 사용하기 위함이라고 답글이 달린걸 봤는데 이것또한 그러한 이유때문인가요?
-
해결됨스프링부트 시큐리티 & JWT 강의
구글 로그인시 authentication이 null 값이라고 에러가 발생합니다.
8강 15:08쯤에 구글 로그인을 하고 http://localhost:8080/test/oauth/login 경로로 get요청을 보내게 되면 아래와 같은 에러가 발생합니다. 원인은 authentiacation의 값이 null이기 때문에 getPrincipal()을 하지 못하는 것 같습니다. 어떤 부분에서 Authentication객체에 값을 넣어주는 걸까요??혹시 loadUser메소드에서는 값이 정확하게 노출이 되는것을 확인 할 수 있는데 혹시 loadUser에서 authentication객체에 값을 넣어주는 부분일까요??
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
[긴급-재업로드]수업질문 로그인 안 되는 문제
https://drive.google.com/file/d/1ZLSuM4WzJVs4Hec74h64ketY0KtzEEFu/view?usp=sharing이 링크에 가면 pdf가 있는데, 여기에 제가 작성한 코드를 모두 작성했습니다.이 구글드라이브 링크에 가서 코드를 확인해보시고 답변에 참고가 되셨으면 좋겠습니다. 이 외에Tag.java, ConsoleMailSendeer.java, check-email.html, checked-email.html, profile.html, fragments.html는 pdf에 있습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Integer age에 age=""를 넘기는 경우
@ResponseBody @RequestMapping("/request-param-required") public String requestParamRequired( @RequestParam(required = true) String username, @RequestParam(required = false) Integer age) { log.info("username={}, age={}", username, age); return "ok"; }'http://localhost:8080/request-param-required?username=&age='라고 요청을 했습니다. Integer age = "";과 같이 되기에 오류가 발생할 것이라고 생각했는데, 요청이 정상적으로 처리되었고 콘솔에는 'username=, age=null'로 찍혔습니다. 왜 그런걸까요?