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

zerofunc님의 프로필 이미지
zerofunc

작성한 질문수

스프링 부트 개념과 활용

SpringApplication 1부

SpringAppication1부 마지막 SpringApplicationBuilder를 사용시 에러

작성

·

6K

0

@SpringBootApplication

public class SpringinitApplication {

public static void main(String[] args) {

new SpringApplicationBuilder()

.sources(SpringApplication.class)

.run(args);

}

}

소스코드를 위와 같이 설정했는데 run 하면 banner뜨고 로그 뜨다가

2018-08-04 00:08:12.228 ERROR 20688 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

이런 에러 메시지가 뜨는데 이유를 잘 모르겠어서 질문을 남겨봅니다

답변 4

2

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

안녕하세요 답변감사합니다
확인해보니 pom.xml에 이미 답변해주신 spring-boot-starter-web은 이미 의존성이 추가돼있습니다

SpringApplication.run(SpringinitApplication.class, args);

그냥 이런식으로 하는건 되지만.. 빌더를 이용한건 여전히 되지않습니다.
mvn clean package해도 동일한 에러가 나고있네요
현재 pom.xml은 아래와 같이 설정돼있습니다

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

1

백기선님의 프로필 이미지
백기선
지식공유자

아 코드에 문제가 있었네요. ㅎㅎ
.build() 하신다음에 .run()을 호출하셔야 합니다.

new SpringApplicationBuilder(Demo1Application.class)
    .build()
    .run(args);

이렇게 해보세요. 그리고 메인 클래스는 source()를 써서 줘도 되지만 그냥 빌더 생성자에 넣어주셔도 되요.
감사합니다.

1

백기선님의 프로필 이미지
백기선
지식공유자

제 생각엔, 웹 스타터 의존성을 추가하지 않아서, 서블릿 관련 자동 설정이 추가가 되지 않았고, 그래서 ServletWebServerFacotry 빈을 못찾아서 에러가 난것 같습니다.

pom.xml에 다음과 같이 의존성을 추가하고 다시 해보시겠어요?

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

</dependencies>

감사합니다.

0

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

답변 감사합니다 잘 동작하네요!

좋은 하루 되세요~ :D

zerofunc님의 프로필 이미지
zerofunc

작성한 질문수

질문하기