인프런 커뮤니티 질문&답변

kss8014님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

스코프와 Provider 강의에서 질문합니다.

해결된 질문

작성

·

197

·

수정됨

0

안녕하세요. 선생님 영상을 보면서 라이브 코딩하면서 오류가 발생할때 저는 오류가 발생을 안하고

오류가 발생하면 안되는 곳에서는 발생해서 질문남깁니다.

package web;

import hello.core.common.MyLogger;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequiredArgsConstructor
public class LogDemoController {

    private final LogDemoService logDemoService;
    private final ObjectProvider<MyLogger> myLoggerProvider;

    @RequestMapping("log-demo")
    @ResponseBody
    public String logDemo(HttpServletRequest request) {

        String requestURL = request.getRequestURL().toString();
        MyLogger myLogger = myLoggerProvider.getObject();
        myLogger.setRequestURL(requestURL);

        myLogger.log("controller test");
        logDemoService.logic("testId");
        return "OK";
    }
}
package web;

import hello.core.common.MyLogger;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class LogDemoService {

    private final ObjectProvider<MyLogger> myLoggerProvider;

    public void logic(String id) {
        MyLogger myLogger = myLoggerProvider.getObject();
        myLogger.log("service id = " + id);
    }
}
18:48:19.302 [main] INFO  hello.core.CoreApplication --
                Starting CoreApplication using Java 17.0.8.1 with PID 1715 (/Users/kssk3-/Desktop/study/core/build/classes/java/main started by kssk3- in /Users/kssk3-/Desktop/study/core)
18:48:19.303 [main] INFO  hello.core.CoreApplication --
                No active profile set, falling back to 1 default profile: "default"
18:48:19.661 [main] INFO  o.s.b.w.e.tomcat.TomcatWebServer --
                Tomcat initialized with port 8080 (http)
18:48:19.665 [main] INFO  o.a.coyote.http11.Http11NioProtocol --
                Initializing ProtocolHandler ["http-nio-8080"]
18:48:19.665 [main] INFO  o.a.catalina.core.StandardService --
                Starting service [Tomcat]
18:48:19.665 [main] INFO  o.a.catalina.core.StandardEngine --
                Starting Servlet engine: [Apache Tomcat/10.1.16]
18:48:19.683 [main] INFO  o.a.c.c.C.[Tomcat].[localhost].[/] --
                Initializing Spring embedded WebApplicationContext
18:48:19.684 [main] INFO  o.s.b.w.s.c.ServletWebServerApplicationContext --
                Root WebApplicationContext: initialization completed in 363 ms
call AppConfig.memberRepository
call AppConfig.memberService
call AppConfig.orderService
18:48:19.817 [main] INFO  o.a.coyote.http11.Http11NioProtocol --
                Starting ProtocolHandler ["http-nio-8080"]
18:48:19.825 [main] INFO  o.s.b.w.e.tomcat.TomcatWebServer --
                Tomcat started on port 8080 (http) with context path ''
18:48:19.829 [main] INFO  hello.core.CoreApplication --
                Started CoreApplication in 0.642 seconds (process running for 1.077)


영상초반에 Provider 적용후 강의에서는 local 사이트 화면에서는 OK로 변경된 화면이 나오지만

저의 사이트에서는 여전히 오류가 발생하고 있어서 문의드립니다.

추가로 인텔리제이 종료후 재시작해서 CoreApplication를 작동해보았는데 추가적인 오류가 나왔습니다.

 

18:59:26.308 [main] INFO  o.a.coyote.http11.Http11NioProtocol --
                Starting ProtocolHandler ["http-nio-8080"]
18:59:26.310 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext --
                Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'
18:59:26.317 [main] INFO  o.s.b.a.l.ConditionEvaluationReportLogger --
                
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
18:59:26.325 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter --
                

***************************
APPLICATION FAILED TO START
***************************

Description:

Web server failed to start. Port 8080 was already in use.

Action:

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.


Process finished with exit code 1

답변 2

2

안녕하세요. kss8014님, 공식 서포터즈 David입니다.

우선, 8080포트를 이미 사용중인 프로세스가 있는 것으로 보여집니다

아래 가이드를 참고하셔서 8080포트를 사용중인 프로세스를 종료시켜 주세요.

윈도우 사용자

image

맥 사용자

1. 터미널 실행

2. lsof -i :"8080"

3. kill -9 [PID:프로세스 번호]

아울러, 오류가 발생하셨다면 오류와 관련된 내용(오류 화면, 오류 메시지 등)을 최대한 많이 질문 글에서 제공해 주셔야 상세한 답변을 받으시는데 도움이 되시는 점 참고해 주세요:)

감사합니다.

kss8014님의 프로필 이미지
kss8014
질문자

안녕하세요 말씀해주신 방향으로 8080포트를 종료후

다시 CoreApplication main 포트를 작동하였으나

/log-demo 페이지로는 똑같이 오류가 나타나고 있습니다.

어떤 오류가 발생하는지 오류 화면과 오류 메시지 등을 자세히 알려주실 수 있으실까요?

kss8014님의 프로필 이미지
kss8014
질문자

image8080 사이트랑 log-demo 사이트랑 같은 오류 페이지가 나타나고 있습니다.

혹시 스트링이 제대로 작동안하고 있는거면 필요하신 설정 값 캡쳐해서 댓글에 남기도록하겠습니다.

 

강의와 패키지가 다른 것 같습니다.

hello.core.web이 아니라 web으로 패키지가 시작하시네요.

강의와 동일한 구조로 맞추신 뒤 다시 해보시겠어요?
현재 컨트롤러가 전혀 스캔되지 않는 것 같습니다.

kss8014님의 프로필 이미지
kss8014
질문자

감사합니다.

패키지가 설정이 hello.cor안에 있지 않아서 작동이 안된 것 같습니다.

현재는 작동이됩니다!

감사합니다

0

안녕하세요, 인프런 AI 인턴입니다.

스코프와 Provider 관련하여 발생한 오류에 대해 질문주셨군요. 유사한 질문과 그에 대한 답변을 찾아서 제공해드리겠습니다.

질문하신 내용과 유사한 상황에서의 해결 방법이 담긴 질문&답변 내용입니다.

해당 내용을 참고하시어 문제를 해결해보시기 바랍니다. 추가적으로 포트 충돌 문제가 발생한 것 같은데, 이미 8080 포트를 사용 중인 다른 프로세스가 있는지 확인하고, 필요하다면 해당 프로세스를 종료하시거나 다른 포트 번호를 사용하여 애플리케이션을 실행해보시기 바랍니다.

kss8014님의 프로필 이미지

작성한 질문수

질문하기