묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO를 만드는 레이어에 관한 질문
안녕하세요! - 서비스에서 DTO를 만들어서 컨트롤러에게 리턴하는 방식 - 서비스에서는 엔티티를 리턴하고 컨트롤러에서 최종적으로 응답을 내보낼 때 DTO로 감싸서 내보내는 방식 두가지의 방법중에서 어떠한것이 더 좋은 선택일까 고민하고 있습니다. 인터넷을 찾아봐도 많은 논쟁들이 있었지만 무엇이 더 나은 방법이라고 확실하게 답변해주는 건 없는 것 같아요. 개인적으로 서비스에서 DTO를 반환하는게 핵심 비즈니스 로직을 감출 수 있고 의존성을 낮출 수 있다고 생각합니다. 그런데 여기서 문제점이 생기는데, 예를 들어 UserService에 아래와 같은 메소드 2개가 있다고 가정할게요. - findByUserId(Long id) - 내부에서 repo호출하여 유저 엔티티를 가져온 후 DTO로 반환 - updateUser(Long id, ...) `updateUser()`에서는 `findByUserId()`를 호출하여 유저를 가져오고 특정 로직에 따라 업데이트하는 구문을 수행하는 목적입니다. 그런데 `findByUserId()`에서 엔티티를 반환했기때문에 엔티티를 가져오기 위해 다시 한번 repo를 호출하여 실제 엔티티를 가져온 후 정보를 변경하는 로직을 수행해야합니다. 따라서 추가적인 쿼리가 발생하는 문제가 생깁니다. 사실 위 예제는 조금 극단적인 예제이긴 합니다만, 실무에서 개발하다보니 서비스에서 서비스를 호출하는 경우가 빈번하게 발생하더라구요. 하지만 엔티티 자체를 컨트롤러까지 노출하는건 뭔가 꺼려집니다. 질문을 요약하자면, DTO를 서비스에서 리턴하는 방식과 서비스는 엔티티를 리턴하고 컨트롤러에서 DTO로 조합하여 최종 응답을 내보내는 방식 중 어떠한 것이 더 좋다고 생각하시는지 알고 싶습니다. (또는 실무에서 자주 사용하는 방식) 감사합니다 :)
-
미해결3. 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]
오류입니다
5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: 서버 버전 이름: Apache Tomcat/8.5.65 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: Server 빌드 시각: Mar 30 2021 12:28:40 UTC 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: Server 버전 번호: 8.5.65.0 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: 운영체제 이름: Windows 10 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: 운영체제 버전: 10.0 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: 아키텍처: amd64 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: 자바 홈: C:\Program Files\Java\jdk1.8.0_261\jre 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: JVM 버전: 1.8.0_261-b12 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: JVM 벤더: Oracle Corporation 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: CATALINA_BASE: D:\study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: CATALINA_HOME: D:\heejae\apache-tomcat-8.5.65 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: 명령 행 아규먼트: -Dcatalina.base=D:\study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: 명령 행 아규먼트: -Dcatalina.home=D:\heejae\apache-tomcat-8.5.65 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: 명령 행 아규먼트: -Dwtp.deploy=D:\study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: 명령 행 아규먼트: -Djava.endorsed.dirs=D:\heejae\apache-tomcat-8.5.65\endorsed 5월 03, 2021 11:53:12 오전 org.apache.catalina.startup.VersionLoggerListener log 정보: 명령 행 아규먼트: -Dfile.encoding=UTF-8 5월 03, 2021 11:53:12 오전 org.apache.catalina.core.AprLifecycleListener lifecycleEvent 정보: 프로덕션 환경들에서 최적의 성능을 제공하는, APR 기반 Apache Tomcat Native 라이브러리가, 다음 java.library.path에서 발견되지 않습니다: [C:\Program Files\Java\jdk1.8.0_261\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_261/bin/server;C:/Program Files/Java/jre1.8.0_261/bin;C:/Program Files/Java/jre1.8.0_261/lib/amd64;C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Java\jdk1.8.0_261\bin;C:\project\maven-3.6.3\bin;C:\Ruby27-x64\bin;C:\Users\my\AppData\Local\Microsoft\WindowsApps;C:\Users\my\AppData\Local\atom\bin;D:\eCovFrame\eGovFrameDev-3.7.0-64bit\eclipse;;.] 5월 03, 2021 11:53:12 오전 org.apache.coyote.AbstractProtocol init 정보: 프로토콜 핸들러 ["http-nio-8088"]을(를) 초기화합니다. 5월 03, 2021 11:53:13 오전 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 정보: Using a shared selector for servlet write/read 5월 03, 2021 11:53:13 오전 org.apache.catalina.startup.Catalina load 정보: Initialization processed in 2251 ms 5월 03, 2021 11:53:13 오전 org.apache.catalina.core.StandardService startInternal 정보: 서비스 [Catalina]을(를) 시작합니다. 5월 03, 2021 11:53:13 오전 org.apache.catalina.core.StandardEngine startInternal 정보: 서버 엔진을 시작합니다: [Apache Tomcat/8.5.65] 5월 03, 2021 11:53:20 오전 org.apache.jasper.servlet.TldScanner scanJars 정보: 적어도 하나의 JAR가 TLD들을 찾기 위해 스캔되었으나 아무 것도 찾지 못했습니다. 스캔했으나 TLD가 없는 JAR들의 전체 목록을 보시려면, 로그 레벨을 디버그 레벨로 설정하십시오. 스캔 과정에서 불필요한 JAR들을 건너뛰면, 시스템 시작 시간과 JSP 컴파일 시간을 단축시킬 수 있습니다. 5월 03, 2021 11:53:20 오전 org.apache.catalina.core.ApplicationContext log 정보: No Spring WebApplicationInitializer types detected on classpath 5월 03, 2021 11:53:21 오전 org.apache.catalina.core.ApplicationContext log 정보: Initializing Spring root WebApplicationContext 2021-05-03 11:53:21,357 INFO [org.springframework.web.context.ContextLoader] Root WebApplicationContext: initialization started 2021-05-03 11:53:21,649 INFO [org.springframework.web.context.support.XmlWebApplicationContext] Refreshing Root WebApplicationContext: startup date [Mon May 03 11:53:21 KST 2021]; root of context hierarchy 2021-05-03 11:53:21,868 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from file [D:\study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Egov_WEB\WEB-INF\classes\egovframework\spring\context-aspect.xml] 2021-05-03 11:53:22,061 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from file [D:\study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Egov_WEB\WEB-INF\classes\egovframework\spring\context-common.xml] 2021-05-03 11:53:22,296 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from file [D:\study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Egov_WEB\WEB-INF\classes\egovframework\spring\context-datasource.xml] 2021-05-03 11:53:22,318 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from file [D:\study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Egov_WEB\WEB-INF\classes\egovframework\spring\context-idgen.xml] 2021-05-03 11:53:22,343 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from file [D:\study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Egov_WEB\WEB-INF\classes\egovframework\spring\context-properties.xml] 2021-05-03 11:53:22,368 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from file [D:\study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Egov_WEB\WEB-INF\classes\egovframework\spring\context-transaction.xml] 2021-05-03 11:53:22,527 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from file [D:\study\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Egov_WEB\WEB-INF\classes\egovframework\spring\context-validator.xml] 2021-05-03 11:53:23,317 INFO [org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor] JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 2021-05-03 11:53:24,817 DEBUG [egovframework.rte.fdl.property.impl.EgovPropertyServiceImpl] [Properties Service] 프로퍼티 key = pageUnit, 값 = 10 은 이 설정파일에 정의되어 있습니다. 2021-05-03 11:53:24,820 DEBUG [egovframework.rte.fdl.property.impl.EgovPropertyServiceImpl] [Properties Service] 프로퍼티 key = pageSize, 값 = 10 은 이 설정파일에 정의되어 있습니다. 2021-05-03 11:53:24,897 INFO [org.springmodules.validation.commons.DefaultValidatorFactory] Loading validation configurations from [ServletContext resource [/WEB-INF/config/egovframework/validator/validator-rules.xml],ServletContext resource [/WEB-INF/config/egovframework/validator/validator.xml]] 2021-05-03 11:53:25,338 INFO [org.springframework.web.context.ContextLoader] Root WebApplicationContext: initialization completed in 3953 ms 5월 03, 2021 11:53:25 오전 org.apache.catalina.core.ApplicationContext log 정보: Initializing Spring FrameworkServlet 'action' 2021-05-03 11:53:25,516 INFO [org.springframework.web.servlet.DispatcherServlet] FrameworkServlet 'action': initialization started 2021-05-03 11:53:25,521 INFO [org.springframework.web.context.support.XmlWebApplicationContext] Refreshing WebApplicationContext for namespace 'action-servlet': startup date [Mon May 03 11:53:25 KST 2021]; parent: Root WebApplicationContext 2021-05-03 11:53:25,522 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from ServletContext resource [/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml] 2021-05-03 11:53:25,703 INFO [org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor] JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 2021-05-03 11:53:25,938 WARN [org.springframework.web.context.support.XmlWebApplicationContext] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0' defined in ServletContext resource [/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml]: Cannot create inner bean 'egovframework.example.cmmn.web.EgovBindingInitializer#64f627bc' of type [egovframework.example.cmmn.web.EgovBindingInitializer] while setting bean property 'webBindingInitializer'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [egovframework.example.cmmn.web.EgovBindingInitializer] for bean with name 'egovframework.example.cmmn.web.EgovBindingInitializer#64f627bc' defined in ServletContext resource [/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml]; nested exception is java.lang.ClassNotFoundException: egovframework.example.cmmn.web.EgovBindingInitializer 2021-05-03 11:53:25,969 ERROR [org.springframework.web.servlet.DispatcherServlet] Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0' defined in ServletContext resource [/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml]: Cannot create inner bean 'egovframework.example.cmmn.web.EgovBindingInitializer#64f627bc' of type [egovframework.example.cmmn.web.EgovBindingInitializer] while setting bean property 'webBindingInitializer'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [egovframework.example.cmmn.web.EgovBindingInitializer] for bean with name 'egovframework.example.cmmn.web.EgovBindingInitializer#64f627bc' defined in ServletContext resource [/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml]; nested exception is java.lang.ClassNotFoundException: egovframework.example.cmmn.web.EgovBindingInitializer at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) ~[spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) ~[spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634) ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682) ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553) ~[spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) [spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) [spring-webmvc-4.2.4.RELEASE.jar:4.2.4.RELEASE] at javax.servlet.GenericServlet.init(GenericServlet.java:158) [servlet-api.jar:3.1.FR] at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1143) [catalina.jar:8.5.65] at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1090) [catalina.jar:8.5.65] at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:984) [catalina.jar:8.5.65] at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4891) [catalina.jar:8.5.65] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5202) [catalina.jar:8.5.65] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:8.5.65] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412) [catalina.jar:8.5.65] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402) [catalina.jar:8.5.65] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_261] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_261] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_261] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_261] Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [egovframework.example.cmmn.web.EgovBindingInitializer] for bean with name 'egovframework.example.cmmn.web.EgovBindingInitializer#64f627bc' defined in ServletContext resource [/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml]; nested exception is java.lang.ClassNotFoundException: egovframework.example.cmmn.web.EgovBindingInitializer at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1352) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] ... 31 more Caused by: java.lang.ClassNotFoundException: egovframework.example.cmmn.web.EgovBindingInitializer at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1372) ~[catalina.jar:8.5.65] at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1195) ~[catalina.jar:8.5.65] at org.springframework.util.ClassUtils.forName(ClassUtils.java:250) ~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:394) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1397) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1344) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] ... 31 more 5월 03, 2021 11:53:25 오전 org.apache.catalina.core.ApplicationContext log 심각: 서블릿 [action]을(를) 위한 Servlet.init() 호출이 예외를 발생시켰습니다. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0' defined in ServletContext resource [/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml]: Cannot create inner bean 'egovframework.example.cmmn.web.EgovBindingInitializer#64f627bc' of type [egovframework.example.cmmn.web.EgovBindingInitializer] while setting bean property 'webBindingInitializer'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [egovframework.example.cmmn.web.EgovBindingInitializer] for bean with name 'egovframework.example.cmmn.web.EgovBindingInitializer#64f627bc' defined in ServletContext resource [/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml]; nested exception is java.lang.ClassNotFoundException: egovframework.example.cmmn.web.EgovBindingInitializer at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1143) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1090) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:984) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4891) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5202) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [egovframework.example.cmmn.web.EgovBindingInitializer] for bean with name 'egovframework.example.cmmn.web.EgovBindingInitializer#64f627bc' defined in ServletContext resource [/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml]; nested exception is java.lang.ClassNotFoundException: egovframework.example.cmmn.web.EgovBindingInitializer at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1352) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) ... 31 more Caused by: java.lang.ClassNotFoundException: egovframework.example.cmmn.web.EgovBindingInitializer at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1372) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1195) at org.springframework.util.ClassUtils.forName(ClassUtils.java:250) at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:394) at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1397) at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1344) ... 33 more 5월 03, 2021 11:53:25 오전 org.apache.catalina.core.StandardContext loadOnStartup 심각: 웹 애플리케이션 [/Egov_WEB] 내의 서블릿 [action]이(가) load() 예외를 발생시켰습니다. java.lang.ClassNotFoundException: egovframework.example.cmmn.web.EgovBindingInitializer at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1372) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1195) at org.springframework.util.ClassUtils.forName(ClassUtils.java:250) at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:394) at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1397) at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1344) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1143) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1090) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:984) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4891) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5202) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 5월 03, 2021 11:53:26 오전 org.apache.coyote.AbstractProtocol start 정보: 프로토콜 핸들러 ["http-nio-8088"]을(를) 시작합니다. 5월 03, 2021 11:53:26 오전 org.apache.catalina.startup.Catalina start 정보: Server startup in 12617 ms
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
제로초님 오랜만에 질문하나만 올리겠습니다.
개인 토이 프로젝트를 하나 하고 있는데요, 혹시 next.js에서 도메인 라우팅 하는 방법이 있나요? 문제가 뭐냐면 제가 만든 토이 프로젝트가 있는데 http://www.hubfoodlink.com 으로 접속해서 해당 정보를 클릭하면 리엑트 컴포넌트 모달창이 띄워지는데, http://hubfoodlink.com 으로 접속하면 접속은 되는데 정보 클릭 시 리엑트 컴포넌트 모달창이 안뜨고 An unexpected error has occurred. 라고 떠서 문제가 발생되네요 ㅠ 아니면 http://hubfoodlink.com 접속시 www을 붙여서 http://www.hubfoodlink.com접속이 되게 하는 방법이 있을까요? 물론 강의와 관련없는 질문이긴한데 몇일간 찾아보고 고민해봐도 해결되지 않아서 염치불구하고 질문을 올려봅니다. 죄송합니다 ㅠ
-
미해결자바스크립트 머신러닝 TensorFlow.js
강의 자료 요청드립니다.
수업을 등록하여 듣고 있습니다. 설명해주시는 강의자료를 내려 받을 수 있는곳을 안내 부탁드립니다.
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
v-for에서
<div v-for="user in users"> 여기서 v-for 가 users는 data안에 정의한 변수이고 user는 그냥 임의로 제가 코드를 짜면서 만드는 이름일까요??user in users -> apple in users이렇게 해도 무방한가요?? 그리고 바인딩을 할떄 {{ user.title }}인데 {{ users.title}}로 하면 화면에 나오지 안더라구요 v-for 자체가 (임의로 작성) in (data에 명시한것) {{ (v-for에서 임의로 작성한 이름).data안에 나온 것 }} 이 개념이 맞을까요?? v-for사용하면서 정확하게 모르는거 같아서 여쭤 봅니다
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
DB 리셋 방법
71강 상품 생성, 조회 API 구현 강의 듣던 중 포스트맨 create product에서 상품을 만들고 send를 여러번 했더니 id값이 계속해서 늘어나더라구요. 그래서 SQLite DB에 있던 정보들을 지우면 될까싶어 지웠는데 똑같이 늘어나서 문의 드립니다. 어떻게 초기화하고 다시 1번부터 나타나게 할 수 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 Database에 반영이 안됩니다.
제목 그대로 H2 에 수정사항이 반ㅇ영이안돼네요 ㅠㅠ
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
apigateway와 eureka server
안녕하세요. 좋은 강의 감사합니다. 강의를 듣던중에 apigateway와 eureka server의 역할이 왜 분리되어 있는지 이해가 안됩니다. 제 생각에는 그냥 eureka server에서 apigateway 역할까지 같이하면 되지 않나 생각하거든요. 어차피 eureka server에서 모든 마이크로 서비스들의 위치정보를 들고 있으니 클라이언트는 eureka server에 접근해서 서비스를 받으면 되지 않나요?
-
미해결코딩테스트 전 꼭 알아야 할 개념과 문제(with 자바)
어떤 문제인지에 대한 설명이 없어서 이해가 안가네요;;
왜 9-6-2-1이라서 4인지 문제 설명이 없어서 시간지나면 문제 설명이 있을 줄 알았는데 도저히 이해가 안가네요;;;; 어떤 문제인가요?
-
미해결IT 회사에서 비개발자가 살아남기 위한 모든 개발 지식 A to Z
리눅스 부심
삭제된 글입니다
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
Cross Validation 로 검증한 모델을 예측 모델로 사용할 때에 대한 질문
좋은 강의 감사드립니다! 책을 구매해서 강의와 같이 보고 있는데, 책 + 강의 내용 모두 정말 알차고, 마치 off line 에서 받은 것과 같은 교육 내용을 저렴한 가격에 제공해 주셔서 정말 감사드립니다. ^^ KFold 나 StratifiedKFold, cross_val_score 등의 방법으로 모델을 검증하고나서, 해당 모델로 신규 데이터에 대한 예측을 하는 경우에 대한 질문입니다. 예를 들어 3개 그룹으로 KFold 를 했고 정확도가 [0.98 0.92 0.96] 와 같이 나왔다면, 각 정확도를 내뱉는 모델들은 각각 다른 weight 를 가지는 각기 다른 모델들일 텐데, 최종적으로 어떤 파라메터가 해당 모델에 저장이 되어 예측시 사용되는 것인지요? 아니면 KFold 를 한 k 개의 모델을 모두 저장했다가 예측시 평균값이나 가장 많이 예측하는 클래스로 예측값을 주는 방식을 사용하는 것인지 궁금합니다. 예를들어 만약 선형회귀식을 만들 때도 KFold 를 사용한다면, k개 만큼의 weight vector 가 만들어질 텐데, 어떤 weight vector를 사용하는 것이 좋은 방법이 될 지요? 1) k 개의 선형회귀 모델을 다 사용하되 앙상블 처럼 각 모델에서 주는 output 들의 평균값을 사용함. 2) k 개의 선형회귀 모델 중에 추정력이 가장 좋은 모델의 weight vector 를 선택해서 향후 예측모델로 사용함. 3) KFold cross validation 결과가 안정적으로 나와 준다면 해당 data 분석에 선형회귀모델 방법이 적합하다고 판단하고, KFold 를 하지 않고 모든 데이터를 그냥 전부 사용해서 최종 선형회귀모델을 만들어서 추후 예측모델로 사용함. (모든 데이터를 training set 으로 사용해 버림) 위 두 가지 중에 어떤 방식이 좋은 방법이 될지요? 아니면 다른 더 좋은 접근 방법이 있을지 문의드립니다. 그리고 덧붙임 질문이지만.... kFold 와 같은 cross validation 부류의 기법을 사용할 때, fold 개수 만큼 (cross validation 을 사용할 때는 데이터개수 만큼) 생성되는 예측모델을 구성하는 weights 들이 유사한지를 tracking 해서 모델의 안정성을 평가해 보는 것이 의미가 있을지... 혹은 그런 접근 방법도 있는지.... 궁금합니다! (Y 의 실측값 vs. Y 의 예측값을 비교해 보는 것이 아닌, 각 모델들의 weights 들이 유사한지를 비교해 보는 것이 의미가 있을지...)
-
미해결하울의 안드로이드 인스타그램 클론 만들기
3강 SHA - 1키를 넣는 방법 sputnik7565님의 SHA1 보충 설명입니다
사용 설정을 한 후 빨간색으로 표시한 '프로젝트 설정'으로 갑니다. 이런 화면이 보이실 텐데 좀 더 내려 보시면 붉은색 부분이 비어져 있을 것입니다. 이쪽에 붙여 넣기를 하시면 됩니다.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
axios로 이미지 업로드
제로초님이 하신대로 비슷하게 했는데 왜 안되는지 모르겠습니다. 제가 오류를 잡아보겠다고 validateStatus: (status) => { return true; }, headers: { 'Content-Type': 'multipart/form-data' }, 위에 두개를 추가해봤는데도 안됩니다. 이거는 문제의 코드 사진이고 이거는 에러 사진입니다.
-
미해결
float 대신 grid와 flex만써도되나요.??
학원다니면사 웹코딩배우고있는데요 웹페이지제작을할때 float을 쓰기는하는데 활용을 잘못합니다 그리고 grid 랑 flex,가 더좋아보여요 그런데 취업을하고 실무를할때는 float기반으로 코딩을하나여?? float기반으로 레이아웃을 잡는게 일반적이라고 들어서요 flex,grid도 활용이 많이되나요??
-
미해결해외취업 ASP.NET Core 웹개발 기본 강좌
Identity 관련 질문
ORM을 EF가 아닌 Dapper로 쓰고 있는 프로젝트를 만들고 있습니다. 닷넷에서 Identity 관련 처리는 EF로만 되는 건가요?
-
미해결실전! Querydsl
2개 이상의 OneToMany 관계에서 fetch join 문제
안녕하세요 영한님! 좋은 강의 너무너무 잘 듣고 있습니다! 다름이 아니라 JPA와 Querydsl을 공부하던 중 궁금한 점이 생겨 이렇게 질문을 드립니다. OneToMany 관계에서는 N+1 문제를 해결하기 위해 fetch join을 사용해 자식 엔티티도 모두 함께 가져오는 것으로 배웠습니다. 만약 아래처럼 하나의 엔티티와 자식 엔티티, 자식 엔티티의 자식 엔티티가 모두 OneToMany 관계인 경우 최상위 엔티티를 가져올 때 한꺼번에 모든 자식 엔티티를 가져올 수 있는 방법이 있는지 여쭤보고 싶습니다..! @Entity public class Forest{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "forest_id") private Long id; @OneToMany(mappedBy = "forest") private List<Tree> trees= new ArrayList<>(); } @Entity public class Tree{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "tree_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "forest_id") private Forest forest; @OneToMany(mappedBy = "tree", cascade = CascadeType.ALL) private List<Leaf> leaves= new ArrayList<>(); } @Entity public class Leaf{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "leaf_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "Tree_id") private Tree tree; } 위 코드를 기준으로 제가 원하는 것은 모든 Forest을 가져올 때, Forest의 자식인 Tree와 Tree의 자식인 Leaf를 함께 가져오는 것인데, 처음엔 단순히 fetch join을 두번 사용하면 될 것이라고 생각했습니다. 따라서 코드를 다음과 같이 작성했습니다. public List<Forest> findAllFetch() { return queryFactory .selectFrom(forest) .leftJoin(forest.trees, tree).fetchJoin() .leftJoin(tree.leaves).fetchJoin() .fetch(); } 하지만 위 코드처럼 두개 이상의 OneToMany 관계에서 fetch join을 여러번 사용하면 MultipleBagFetchException이 발생했습니다. 찾아보니 JPQL에서는 xToMany에서는 일반적으로 fetch join은 한번만 허용된다고 하더라구요... 따라서 제가 생각한 해결책은 위 과정을 2번의 쿼리로 나누어 실행시키는 방법이었습니다. public List<Forest> findAllFetch() { List<Forest> result = queryFactory .selectFrom(forest).distinct() .leftJoin(forest.trees).fetchJoin() .fetch(); List<Long> selectedIds = result.stream() .map(Forest::getId) .collect(Collectors.toList()); queryFactory .selectFrom(tree).distinct() .leftJoin(tree.leaves).fetchJoin() .where(tree.forest.id.in(selectedIds )) .fetch(); return result ; } 혹시 위 코드보다 더 나은 방법이 있는지 아니면 한번의 쿼리로 모든 자식 엔티티를 받아올 수 있는 방법이 있는지 궁금합니다.
-
미해결DataScience와 AI의 개념 (공부하는 방법)
강의자료(PT)를 받을 수 있나요?
안녕하세요 강의 잘 듣고 있습니다. 혹시 강의 PPT 자료를 받을 수 있나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
타임리프 문법
안녕하세요 강의 잘 보고있습니다 질문 하나만 하겠습니다. 상품 수정 링크 -> th:onclick="|location.href='@{/basic/items/{itemId}/edit(itemId=${item.id})}'|" 를 th:onclick="|location.href='@{/basic/items/{item.id}/edit}'|" 로는 쓸수가 없는건가요 ?? ------------------------------------------------- 앞의 회원id 상품명 링크는 th:href="@{/basic/items/{itemId}(itemId=${item.id})}" th:text="${item.id}"> - > th:href="@{|/basic/items/${item.id}|}" th:text="${item.itemName}"> 처럼이요...
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
profile 부분에서 오류가 납니다.
삭제된 글입니다
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
컨테이너 새로 빌드 시 파일이 삭제되나요?
안녕하세요. 강의 중 work directory 설정을 안했을 경우 루트에 여러 파일이 생성되는 것을 확인했습니다. 이후 work directroy파일을 설정 후 다시 빌드하니 전에 루트에 있던 파일들이 삭제된것처럼 보이는데 이는 재 빌드 또는 stop, 컨테이너 삭제 시 사용하고 있는 데이터를 모두 삭제하는 것을 의미하나요? (ex1. 웹으로 부터 사진을 저장하는 기능을 개발2. 도커를 활용하여 컨테이너로 운영(/usr/src/app/data에 사진들이 저장된다)3. 특수한 경우로 인해 도커 컨테이너 정지 및 삭제이러한 경우 모든 사진이 다 삭제되는 건가요?? )