묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 부트 - 핵심 원리와 활용
actuator 경로 질문
만약 컨트롤러를 설정할 때 actuator 경로를 쓰고 싶다면 어떻게 해야되는건가요?제가 테스트를 해보니 @Getmapping(/actuator) 했을 때 제가 설정한 컨트롤러를 타지 않고, 강의에서 알려주시는 액츄에이터 웹이 나오는 것을 확인했습니다.
-
미해결스프링 부트 - 핵심 원리와 활용
커넥션 팬딩 질문
이런 팬딩 상황이 많은 사용자 접근으로 인해 흔히 서버가 터졌다는 상황인건가요??
-
미해결스프링 부트 - 핵심 원리와 활용
스프링부트가 설정파일을 인식하는 방법(application.properties 파일이름)
[application.properties 파일이름]1. 해당 파일 이름을 스프링 부트가 어떻게 설정 파일인지 알고서 설정하는 것인가요? 설정 파일명을 변경하고 싶으면 어떻게 해야하는지 궁금합니다.
-
미해결스프링 부트 - 핵심 원리와 활용
MyContainerInitV1 실행 시 오류
04-Dec-2024 22:31:59.700 심각 [main] org.apache.catalina.startup.ContextConfig.processServletContainerInitializers 이름이 []인 컨텍스트를 위한 ServletContainerInitializer들을 탐지하지 못했습니다. java.io.IOException: java.lang.ClassNotFoundException: hello.container.MyContainerInitV1 at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:234) at org.apache.catalina.startup.WebappServiceLoader.load(WebappServiceLoader.java:202) at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1756) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1256) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:961) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:290) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4311) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:566) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:653) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:599) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1853) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123) at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:494) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:385) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1593) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:267) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109) at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389) at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:743) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:771) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1170) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1160) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:716) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:203) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:866) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.startup.Catalina.start(Catalina.java:755) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:470) Caused by: java.lang.ClassNotFoundException: hello.container.MyContainerInitV1 at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1212) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1043) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:467) at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:231) ... 45 more 04-Dec-2024 22:31:59.702 심각 [main] org.apache.catalina.startup.ContextConfig.configureStart 이전 오류(들)로 인하여, 이 애플리케이션이 가용하지 않은 것으로 표시합니다. 04-Dec-2024 22:31:59.720 심각 [main] org.apache.catalina.core.StandardContext.startInternal 하나 이상의 구성요소(들)이, 해당 컨텍스트가 올바로 설정되지 않았다고 표시했습니다. 04-Dec-2024 22:31:59.728 심각 [main] org.apache.catalina.core.StandardContext.startInternal 이전 오류들로 인해 컨텍스트 []의 시작이 실패했습니다.MyContainerInitV1 클래스와 resources 파일 아래에 정확하게 파일을 생성하였는데 다음과 같은 오류가 발생합니다. 어떻게 해결할 수 있는지 확인해주시면 감사하겠습니다 ㅠㅠ
-
미해결스프링 부트 - 핵심 원리와 활용
내부 클래스 static 안할 시 오류
[ImportSelectorTest 시 StaticConfig 내부 클래스 static 사용이유]안녕하세요. 테스트할 때 StaticConfig 내부 클래스에 static 키워드를 붙이지 않고 테스트를 하니 아래와 같은 오류가 발생하는데요. 이유가 무엇인가요?Error creating bean with name 'importSelectorTest.StaticConfig': Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.selector.ImportSelectorTest' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'importSelectorTest.StaticConfig': Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.selector.ImportSelectorTest' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
-
미해결스프링 부트 - 핵심 원리와 활용
6 자동구성 부분
plugins { id 'org.springframework.boot' version '3.0.2' id 'io.spring.dependency-management' version '1.1.0' id 'java' } group = 'hello' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' //테스트에서 lombok 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' } tasks.named('test') { useJUnitPlatform() }위와 같이 build.gradle을 구성하고 강의대로 따라가고 있는데 여기에 있는 외부라이브러리 (롬복,테스트라이브러리)가 인식이 되지 않고 있습니다. 롬복까지는 수동으로 다운로드해서 진행하고 있는데 계속 이러면 부트를 사용하는 의미가 없는것 같아서 문제를 해결하고 싶습니다!
-
미해결스프링 부트 - 핵심 원리와 활용
WAR, JAR 차이점 (구성하는 파일에 대해)
안녕하세요. 강사님 05:00 분에 WAR를 설명하십니다.WAR : 정적리소스(HTML) + 클래스파일 이라고 설명하십니다.JAR 도 WAR와 마찬가지로 위와같이 HTML, 클래스파일을 갖을 텐데요. 강사님께서는 HTML을 WAR설명때만 언급을 하십니다. WAR 와 JAR가 갖는 파일들에 대해 차이점을 구별하지 못하고 있습니다. 단순 내부구조가 복잡하거나 단순한 걸로 구별을 해야할까요?
-
미해결스프링 부트 - 핵심 원리와 활용
스프링 컨테이너 등록 스프링 라이브러리 오류
가이드대로 스프링 mvc를 추가하는데 추가가 되지 않아서 이후 진행이 안되고 있습니다. 코드를 작성하고 저장하면 자동으로 라이브러리가 생성되는 방식이 아닌가요? 어떻게 해야하는지 알려주시면 감사하겠습니다.
-
미해결스프링 부트 - 핵심 원리와 활용
스프링 부트 현재 버전 말고 다른 버전 확인하는 법
[질문 내용]스프링 부트 docs에서 현재 스프링 부트 버전에 대한 스프링이 관리하는 외부 라이브러리들의 버전을 확인할 수 있었습니다.그런데 스프링 부트나 스프링 프레임워크에서 현재 버전이 아닌 이전 버전에서 스프링이 관리하는 외부 라이브러리들의 버전을 확인하고 싶을 땐 어떻게 해야 하나요?
-
미해결스프링 부트 - 핵심 원리와 활용
서블릿 컨테이너, 스프링 컨테이너 질문
[질문 내용]안녕하세요. 서블릿 컨테이너와 스프링 컨테이너가 헷갈립니다.서블릿 컨테이너 위에서 스프링 컨테이너가 생성되고, 그 사이에 디스패처 서블릿이 스프링 MVC의 컨트롤러들을 매핑해주는 것이 맞나요? 스프링 컨테이너를 사용하지 않았을 땐, 서블릿을 개별적으로 등록하는 것만으로도 웹으로서 작동할 수 있는 것이 맞나요? 서블릿 초기화와 애플리케이션 초기화의 영역을 잘 모르겠습니다. 서블릿이 작동할 때 서블릿 초기화를 진행하게 되고, 그 이후에 애플리케이션 초기화가 진행되는 것으로 알고 있습니다. 그런데 이 두 영역을 왜 나눴는지 모르겠습니다. 예전에 공부할 때 서블릿 설정은 애플리케이션 전체 영역 범위 설정을 하는 것이고, 애플리케이션은 개별적인 영역을 설정하는 것으로 기억하고 있는데 제가 알고 있는 개념이 맞을까요?
-
미해결스프링 부트 - 핵심 원리와 활용
Tomcat EE
[TOMCAT EE는 뭔가요?]질문 내용 그대로 입니다!
-
미해결스프링 부트 - 핵심 원리와 활용
편리한 부트 클래스 만들기 챕터에 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MySpringBootMain 클래스의 main 메서드에서 MySpringApplication.run()을 호출하면서 인자로 MySpringBootMain을 넘깁니다. 이 자리는 configClass인데, MySpringBootMain에는 @MySpringBootApplication 어노테이션만 붙어있고, Bean이나 기타 설정에 대한 내용은 전혀 없습니다. 또한 @Configuration 어노테이션도 없습니다. 그렇다면 @MySpringBootApplication을 통해서 Configuration 클래스의 역할을 하는 것 같은데 이 부분이 잘 이해가 되지 않습니다. 아마도 @ComponentScan 어노테이션이 MySpringBootMain가 configClass의 역할을 하도록 해주는 것 같은데 어떤 원리인지 잘 모르겠습니다. EmbedTomcatSpringMain를 사용할 때는 HelloConfig.class를 넘기는데, 이때는 @Configuration이 붙어있으니까 이해가 됩니다. @ComponentScan이 붙어있으면 해당 클래스의 패키지의 모든 컴포넌트를 읽는다고 하는데, 여기에 뭔가 생략된 설명이 있는 것 같은데 잘 모르겠습니다. 질문이 중언부언해서 죄송합니다!
-
해결됨실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
선수작업으로 프로메테우스 강의를 들어야할까요?
안녕하세요 강사님,그라파나 대시보드를 elb, ecs의 cpu, memory, reqeust count, healthy/unhealthy count 등의 데이터를 그래프로 간단하게 등록해서 사용했었는데요그라파나를 학습해서 조금 더 체계적인 모니터링을 하고싶어서 수강하려고합니다. 그런데 프로메테우스는 사용하질 않는데, 혹시 선수작업으로 프로메테우스를 듣고 그라파나 강의를 들어야하는 연계 과정일까요? 그냥 실습의 예가 프로메테우스&EKS 로 그라파나 구성하는거고 프로메테우스를 잘 모르더라도, 그라파나에 패널을 알고 이해하고 제가 필요한 데이터로 대시보드를 생성하면 될까요?초반부 강의 듣다 궁금하여 문의드립니다..!
-
해결됨스프링 부트 - 핵심 원리와 활용
스프링 레거시에서 프로메테우스를 통한 메트릭 수집
강사님 안녕하세요. 만약 스프링부트가 아닌 스프링 레거시 프로젝트와 같은경우cpu 사용량확인 및 메모리 확인 엔드포인트, 메트릭api 를 직접 구현해서 프로메테우스에서 수집하도록 해야할까요? 스프링 레거시프로젝트에서는 Actuator 라이브러리를 못쓰는걸로 알거든요
-
미해결실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
histogram panel 설정시
강의에서 나온 PromQL을 똑같이 작성하고 time-series 타입에서 run query를 하면 결과가 잘 표시되지만 histogram 타입에서 run query를 실행하면 아무 결과가 뜨지 않는데 무엇이 문제일까요?.?
-
미해결스프링 부트 - 핵심 원리와 활용
5장 자동구성) 자동 구성이 내부에서 컴포넌트 스캔을 사용하면 안되는 이유
자동 구성이 내부에서 컴포넌트 스캔을 사용하면 안되는 이유가 무엇인가요? 컴포넌트 스캔을 사용하면 패키지 구조에 의존적이게 돼서 그런걸까요?
-
미해결스프링 부트 - 핵심 원리와 활용
explodedWar 문의
server 프로젝트 위치에서 gradlew explodedWar 을 실행해 압축이 풀어진 WAR 파일 경로를 톰캣 Deployment directory 경로에 기재해두었습니다. 이후 강의를 보니 강사님께서는 프로젝트를 수정하고 나서 톰캣을 재실행하니 소스가 수정된 내역이 서버에 바로 반영이 되더라구요. 근데 저는 server 프로젝트 경로로 가서 build 폴더의 exploded 파일을 삭제하고 다시 gradlew explodedWar 명령어를 실행해야 수정된 소스가 톰캣에서 실행되던데 뭐가 잘못된걸까요..?
-
미해결실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
sh scripts/vf_net_create_vnet2.sh 에러
(base) ryanchoi@Byungsoos-MBP 2.4 % sh scripts/vf_net_create_vnet2.sh Library Loadedvmnetcfg: vnlvnetcfgadd - successfully added key:value - VNET_7_DHCP:no Library Loadedvmnetcfg: vnlvnetcfgadd - successfully added key:value - VNET_7_HOSTONLY_SUBNET:192.168.1.0 Library Loadedvmnetcfg: vnlvnetcfgadd - successfully added key:value - VNET_7_HOSTONLY_NETMASK:255.255.255.0 Library Loadedvmnetcfg: vnlvnetcfgadd - successfully added key:value - VNET_7_NAT:yes Library Loadedvmnetcfg: vnlvnetcfgadd - successfully added key:value - VNET_7_VIRTUAL_ADAPTER:yes Stopped DHCP service on vmnet1Stopped DHCP service on vmnet8Stopped NAT service on vmnet8Stopped all configured services on all networksBacked up existing network settings to backup file "/tmp/vmware.UhNzLO"Restored network settingsStopped all configured services on all networksEnabled hostonly virtual adapter on vmnet1Started DHCP service on vmnet1Failed to start NAT service on vmnet7Enabled hostonly virtual adapter on vmnet7Started NAT service on vmnet8Enabled hostonly virtual adapter on vmnet8Started DHCP service on vmnet8Failed to start some/all services알려주신 대로, vmnet7 이 설치가 된 건 확인이 되었지만, Failed to start some/all services 이런 에러가 떠도 문제가 없는 걸까요? 감사합니다.
-
미해결실습으로 배우는 그라파나 - {{ x86-64, arm64 }}
launchctl-load-vmware-utility 에러
(base) ryanchoi@Byungsoos-MBP 2.4 % launchctl-load-vmware-utility Load failed: 5: Input/output errorTry running launchctl bootstrap as root for richer errors.이런 에러가 발생해서, sudo 를 써봐도 해결이 안되는데,혹시 어떻게 해결할 수 있을까요? ***** 추가 (base) ryanchoi@Byungsoos-MBP k8s % vagrant upBringing machine 'cp-k8s-1.30.0' up with 'vmware_desktop' provider...Bringing machine 'w1-k8s-1.30.0' up with 'vmware_desktop' provider...Bringing machine 'w2-k8s-1.30.0' up with 'vmware_desktop' provider...Bringing machine 'w3-k8s-1.30.0' up with 'vmware_desktop' provider...==> cp-k8s-1.30.0: Box 'sysnet4admin/Ubuntu-k8s' could not be found. Attempting to find and install... cp-k8s-1.30.0: Box Provider: vmware_desktop, vmware_fusion, vmware_workstation cp-k8s-1.30.0: Box Version: >= 0==> cp-k8s-1.30.0: Loading metadata for box 'sysnet4admin/Ubuntu-k8s' cp-k8s-1.30.0: URL: https://vagrantcloud.com/api/v2/vagrant/sysnet4admin/Ubuntu-k8s==> cp-k8s-1.30.0: Adding box 'sysnet4admin/Ubuntu-k8s' (v0.8.5) for provider: vmware_desktop (arm64) cp-k8s-1.30.0: Downloading: https://vagrantcloud.com/sysnet4admin/boxes/Ubuntu-k8s/versions/0.8.5/providers/vmware_desktop/arm64/vagrant.boxProgress: 93% (Rate: 13.2M/s, Estimated time remaining: 0:00:04)^R==> cp-k8s-1.30.0: Successfully added box 'sysnet4admin/Ubuntu-k8s' (v0.8.5) for 'vmware_desktop (arm64)'!==> cp-k8s-1.30.0: Cloning VMware VM: 'sysnet4admin/Ubuntu-k8s'. This can take some time...==> cp-k8s-1.30.0: Checking if box 'sysnet4admin/Ubuntu-k8s' version '0.8.5' is up to date...==> cp-k8s-1.30.0: Verifying vmnet devices are healthy...The VMware "vmnet" devices are failing to start. The most commonreason for this is collisions with existing network services. Forexample, if a hostonly network space collides with another hostonlynetwork (such as with VirtualBox), it will fail to start. Likewise,if forwarded ports collide with other listening ports, it willfail to start. Vagrant does its best to fix these issues, but in some cases itcannot determine the root cause of these failures. Please verify you have no other colliding network services running.As a last resort, restarting your computer often fixes this issue.이런 에러가 뜨는 건 launchctl-load-vmware-utility 이 부분 명령어가 제대로 처리가 안되어서 그런거죠?
-
미해결스프링 부트 - 핵심 원리와 활용
rate vs irate
rate는 초당 평균 증가율 (평균 변화율)irate 는 초당 순간 증가율을 나타낸다고 하네요 (미분계수)12시 ~ 12시 5분 사이에 얼마나 많은 변화가 있었는지 보고싶으면 rate딱 정확히 12시 3분이 된 시점에서 변화율을 보고싶으면 irate를 사용하면 되겠습니다.