자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
분명 MySql에 보면 user 테이블에 잘 저장되어 있고 북도 잘 저장되어있는데 왜 계속 null 뜰까요 ㅠㅠ java.lang.IllegalArgumentException: null at java.base/java.util.Optional.orElseThrow( Optional.java:408 ) ~[na:na] at com.group.libraryapp.service.book .BookService.loanBook( BookService.java:43 ) ~[main/:na] at com.group.libraryapp.service.book .BookService$$FastClassBySpringCGLIB$$9fdbff4c.invoke(<generated>) ~[main/:na] at org.springframework.cglib.proxy.MethodProxy.invoke( MethodProxy.java:218 ) ~[spring-core-5.3.24.jar:5.3.24] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint( CglibAopProxy.java:793 ) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:163 ) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed( CglibAopProxy.java:763 ) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation( TransactionInterceptor.java:123 ) ~[spring-tx-5.3.24.jar:5.3.24] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction( TransactionAspectSupport.java:388 ) ~[spring-tx-5.3.24.jar:5.3.24] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke( TransactionInterceptor.java:119 ) ~[spring-tx-5.3.24.jar:5.3.24] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:186 ) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed( CglibAopProxy.java:763 ) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept( CglibAopProxy.java:708 ) ~[spring-aop-5.3.24.jar:5.3.24] at com.group.libraryapp.service.book .BookService$$EnhancerBySpringCGLIB$$41338896.loanBook(<generated>) ~[main/:na] at com.group.libraryapp.controller.book .BookController.loanBook( BookController.java:27 ) ~[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:62 ) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:43 ) ~[na:na] at java.base/java.lang.reflect.Method.invoke( Method.java:566 ) ~[na:na] at org.springframework.web.method.support .InvocableHandlerMethod.doInvoke( InvocableHandlerMethod.java:205 ) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.method.support .InvocableHandlerMethod.invokeForRequest( InvocableHandlerMethod.java:150 ) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:117 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod( RequestMappingHandlerAdapter.java:895 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal( RequestMappingHandlerAdapter.java:808 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle( AbstractHandlerMethodAdapter.java:87 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:1071 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:964 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:1006 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.FrameworkServlet.doPost( FrameworkServlet.java:909 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at javax.servlet.http.HttpServlet.service( HttpServlet.java:696 ) ~[tomcat-embed-core-9.0.69.jar: 4.0.FR ] at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:883 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at javax.servlet.http.HttpServlet.service( HttpServlet.java:779 ) ~[tomcat-embed-core-9.0.69.jar: 4.0.FR ] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:227 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:53 ) ~[tomcat-embed-websocket-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.springframework.web.filter.RequestContextFilter.doFilterInternal( RequestContextFilter.java:100 ) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) ~[spring-web-5.3.24.jar:5.3.24] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.springframework.web.filter.FormContentFilter.doFilterInternal( FormContentFilter.java:93 ) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) ~[spring-web-5.3.24.jar:5.3.24] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:201 ) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:117 ) ~[spring-web-5.3.24.jar:5.3.24] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:189 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:162 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:177 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:97 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:541 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:135 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:92 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:78 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:360 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:399 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:65 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:891 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1784 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.threads.ThreadPoolExecutor$ Worker.run ( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.threads.TaskThread$ WrappingRunnable.run ( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at java.base/ java.lang.Thread.run ( Thread.java:834 ) ~[na:na]
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
User가 UserLoanHistory를 가지게 됨으로써 대출하는 로직이 간단해지지만 UserLoanHistory관련 CRUD를 전부 User에서 비즈니스 로직을 처리해야하는 건가요? User가 처리하는 로직이 너무 많아지는 것 같아 이게 객체지향적인 게 맞나 고민이 되네요 현재 경우는 C U 밖에 없지만 만약 예를 들어서 작가와 책 엔티티가 있을 때 연관관계의 주인은 책에 있지만 작가가 보유한 책을 조회하는 로직을 더 간편하게 처리하기 위해 작가는 책을 리스트로 가지면서 생명주기를 관리하면, 책을 수정하거나 삭제할 때도 무조건 작가의 도메인에서 로직을 처리하게 되는 건가요? 단일책임원칙을 위배하는 것이 아닌가 고민이 되어 질문드립니다!
makemigrations을 했는데 no changes detected가 나왔습니다 근데 docker-compose logs를 하면 db 오류가 계속 나옵니다 이런 경우에는 어떻게 하여야 하죠? 사진 첨부가 안되서 직접 복붙하겠습니다 FROM "blog_post" ORDER BY "blog_post"."id" DESC LIMIT 3 db_1 | 2024-04-01 12:29:31.263 UTC [47] ERROR: relation "blog_post" does not exist at character 256 db_1 | 2024-04-01 12:29:31.263 UTC [47] STATEMENT: SELECT "blog_post"."id", "blog_post"."title", "blog_post"."content", "blog_po st"."hook_text", "blog_post"."author_id", "blog_post"."category_id", "blog_post"."head_image", "blog_post"."file_upload", "blog_post" ."created_at", "blog_post"."updated_at" FROM "blog_post" ORDER BY "blog_post"."id" DESC LIMIT 3 db_1 | 2024-04-01 12:29:31.264 UTC [47] ERROR: relation "blog_post" does not exist at character 256 db_1 | 2024-04-01 12:29:31.264 UTC [47] STATEMENT: SELECT "blog_post"."id", "blog_post"."title", "blog_post"."content", "blog_po st"."hook_text", "blog_post"."author_id", "blog_post"."category_id", "blog_post"."head_image", "blog_post"."file_upload", "blog_post" ."created_at", "blog_post"."updated_at" FROM "blog_post" ORDER BY "blog_post"."id" DESC LIMIT 3 db_1 | 2024-04-01 12:29:31.265 UTC [47] ERROR: relation "blog_post" does not exist at character 256 db_1 | 2024-04-01 12:29:31.265 UTC [47] STATEMENT: SELECT "blog_post"."id", "blog_post"."title", "blog_post"."content", "blog_po st"."hook_text", "blog_post"."author_id", "blog_post"."category_id", "blog_post"."head_image", "blog_post"."file_upload", "blog_post" ."created_at", "blog_post"."updated_at" FROM "blog_post" ORDER BY "blog_post"."id" DESC LIMIT 3 db_1 | 2024-04-01 12:29:31.265 UTC [47] ERROR: relation "blog_post" does not exist at character 256 db_1 | 2024-04-01 12:29:31.265 UTC [47] STATEMENT: SELECT "blog_post"."id", "blog_post"."title", "blog_post"."content", "blog_po st"."hook_text", "blog_post"."author_id", "blog_post"."category_id", "blog_post"."head_image", "blog_post"."file_upload", "blog_post" ."created_at", "blog_post"."updated_at" FROM "blog_post" ORDER BY "blog_post"."id" DESC LIMIT 3 db_1 | 2024-04-01 12:29:31.266 UTC [47] ERROR: relation "blog_post" does not exist at character 256 db_1 | 2024-04-01 12:29:31.266 UTC [47] STATEMENT: SELECT "blog_post"."id", "blog_post"."title", "blog_post"."content", "blog_po st"."hook_text", "blog_post"."author_id", "blog_post"."category_id", "blog_post"."head_image", "blog_post"."file_upload", "blog_post" ."created_at", "blog_post"."updated_at" FROM "blog_post" ORDER BY "blog_post"."id" DESC LIMIT 3 db_1 | 2024-04-01 12:29:31.266 UTC [47] ERROR: relation "blog_post" does not exist at character 256 db_1 | 2024-04-01 12:29:31.266 UTC [47] STATEMENT: SELECT "blog_post"."id", "blog_post"."title", "blog_post"."content", "blog_po st"."hook_text", "blog_post"."author_id", "blog_post"."category_id", "blog_post"."head_image", "blog_post"."file_upload", "blog_post" ."created_at", "blog_post"."updated_at" FROM "blog_post" ORDER BY "blog_post"."id" DESC LIMIT 3 db_1 | 2024-04-01 12:29:31.267 UTC [47] ERROR: relation "blog_post" does not exist at character 256 db_1 | 2024-04-01 12:29:31.267 UTC [47] STATEMENT: SELECT "blog_post"."id", "blog_post"."title", "blog_post"."content", "blog_po st"."hook_text", "blog_post"."author_id", "blog_post"."category_id", "blog_post"."head_image", "blog_post"."file_upload", "blog_post" ."created_at", "blog_post"."updated_at" FROM "blog_post" ORDER BY "blog_post"."id" DESC LIMIT 3 web_1 | [2024-04-01 12:20:00 +0000] [1] [INFO] Starting gunicorn 21.2.0 web_1 | [2024-04-01 12:20:00 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1) web_1 | [2024-04-01 12:20:00 +0000] [1] [INFO] Using worker: sync web_1 | [2024-04-01 12:20:00 +0000] [7] [INFO] Booting worker with pid: 7 [ec2-user@ip-172-26-12-132 django_giyeon]$ docker-compose exec web python manage.py makemigrations No changes detected
비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
안녕하세요 강의를 듣고 있는 학생입니다. 다름이 아니라 워크밴치 접속 문제 때문에 질문 드립니다. 워크밴치를 접속하려하면 위와 같은 문제가 계속 발생하고 있습니다. mysql 8.x 버전부터는 bind-address를 주석처리 할필요가 없다하여 그 부분은 넘어간상태로 계속진행하엿습니다. https://1mini2.tistory.com/87 이 링크를 보고 따라 해보고 있는데 mysql -h 3.36.28.138 -u root -p 이명령어를 쳣을때 위와같이 출력이 되지 않고 있습니다.
안녕하세요! 브라우저에서 png, jpg등의 이미지를 업로드 하면 s3 메타데이터 값에 contentType에 application/octet-stream 이런형식으로 값이 저장되는데요 브라우저에서 이미지가 뜨도록 하고싶은데 다운로드만 하도록 되어져서 혹시 s3 에서 따로 설정하는 곳이 있을까요? 없다면 개발소스에서 업로드 할때 contentType을 무조건 설정해줘야 하는걸까요?
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
오류요ㅜㅜㅜ 어노테이션이나 다른 코드같은 거 잘 넣었는데..계속 문제떠요ㅜㅜ https://github.com/alicelee1231/Spring Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2024-04-01 00:42:10.261 ERROR 6648 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'bookController' defined in file [/Users/isaemmi/Desktop/library-app/out/production/classes/com/group/libraryapp/controller/book/BookController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'bookService' defined in file [/Users/isaemmi/Desktop/library-app/out/production/classes/com/group/libraryapp/service/book/BookService.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userLoanHistoryRepository' defined in com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract boolean com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository.existByBookNameAndIsReturn(java.lang.String,boolean); Reason: Failed to create query for method public abstract boolean com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository.existByBookNameAndIsReturn(java.lang.String,boolean)! No property 'existByBookName' found for type 'UserLoanHistory'; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract boolean com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository.existByBookNameAndIsReturn(java.lang.String,boolean)! No property 'existByBookName' found for type 'UserLoanHistory' at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.6.jar:2.7.6] at com.group.libraryapp.LibraryAppApplication.main(LibraryAppApplication.java:10) ~[classes/:na] Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating be
처음에 .com으로 생성했다가 비용이 비싸서 .link로 다시 구매했습니다. 도메인 삭제만 하면 자동으로 환불 되는줄 알았는데 아니였더군요 ㅠㅠ 도메인 환불은 한번만 되나봐요!! 제가 참고해서 환불 진행한 블로그 링크 공유드립니다! https://yoonminlee.com/route-53-domain-cancellation-guide#2
안녕하세요 재성님! 강의 너무나 잘듣고 있습니다. 크롬 시작 페이지가 이쁘게 꾸며져 있는데(관심 카테고리, 개발 채용 공고 등) 크롬 익스텐션에서 설치 하신걸까요? [자문자답] '서핏' 찾았습니다!! 감사합니다 ㅎㅎ https://chromewebstore.google.com/detail/%EC%84%9C%ED%95%8F-%EB%A7%A4%EC%9D%BC-%EC%84%B1%EC%9E%A5%ED%95%98%EB%8A%94-%EC%82%AC%EB%9E%8C%EB%93%A4%EC%9D%98-%EC%BB%A4%EB%A6%AC%EC%96%B4-%ED%94%8C%EB%9E%AB%ED%8F%BC/ipjibgkeofiedbfcfekfggdmjhhljgjn
몇가지 의문점이 생겨서 질문드립니다. CF - ALB - EC2(API서버) 로 연결이 되어있다고 가정합니다. https://api.example.com/posts/1 로 GET 요청을 하고 해당 Respose 값이 dynamic하게 생성된다면 캐싱기능을 사용할 수 없는 것인가요? 만약 사용한다면 TTL이 끝난 이후 첫 Reqeust에 대한 Response만 해당 TTL동안 반환하나요? CF - S3 로 연결이 되어있다고 가정합니다. S3의 버킷에 버전 옵션이 설정되어있습니다. 버킷의 오브젝트를 업로드 합니다. 새 오브젝트는 이전 버전의 오브젝트와 같은 KEY를 공유하지만, CF로의 캐싱은 TTL이 끝나기 전까지 이전 버전의 오브젝트를 반환하나요? CF - S3 로 연결이 되어있다고 가정합니다. 버킷 안의 리소스를 가져오는건 이해가 됩니다. 하지만 EC2(예: EC2의 node.js 환경에서)에서 S3로 업로드하는건 CF를 타지 않고 업로드 할 수 가 있습니까? 버킷을 private 설정으로 해놓고 EC2에 S3 Full Access role을 부여하고, 버킷 policy에 EC2를 Allow, putObject 정도로 설정해놓으면 가능한가요?
퍼블릭 서브넷에 연결할 라우팅테이블은 퍼블릭서브넷 공통으로 1개만 만들고, 프라이빗 서브넷과 연결할 라우팅테이블은 각각 1개씩 총 4개를 만들어서 각각 연결하셨는데요, 혹시 이유가 있나요?? 왜 퍼블릭은 공통으로1개만 만들고 프라이빗은 각각 1개씩 만들어 연결하신지 궁금합니다
로드벨런서에서 타겟그룹으로 포인팅을 할 때의 리스너가 80번 포트(http)라고 가정합니다. 타겟그룹의 포트는 3000번이라고 한다면 데이터의 흐름이 다음과 같습니까? 사용자가 80번 포트로 request (즉, http://example.com ) 로드벨런서의 보안그룹의 인바운드에 80번이 열려있는지 확인 로드벨런서에 80번포트로 들어왔을 때 타깃그룹으로 포이팅하는 리스너 확인 80번으로 받은 request를 타깃그룹이 대상 인스턴스로 보낼 때 3000번 포트로 변환 대상 인스턴스의 보안그룹의 인바운드에 3000번이 열려있는지 확인 대상 인스턴스의 3000번 포트에 웹 요청이 들어옴(즉, 웹 서버가 3000번 포트에 열려있어야 함). 제가 이해한 것이 맞을까요? 타깃그룹에 포트번호가 있는것이 헷갈립니다. 왜 있는지도 모르겠고...
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@GetMapping("/add") public int addTwoNumbers(CalculatorAddRequest request) { return request.getNumber1() + request.getNumber2(); } @PostMapping("/multiply") public int multiplyTwoNumbers(@RequestBody CalculatorMultiplyRequest request) { return request.getNumber1() * request.getNumber2(); } GetMapping 메소드에서는 @RequestParm 어노테이션을 사용하지 않아도 자동으로 쿼리 데이터를 DTO로 변환해주고 PostMapping 메소드에서는 @RequestBody 어노테이션을 사용해야만 Body 데이터를 DTO로 변환해주는 것인가요?