복붙노트

[SPRING] Spring Boot Application 클래스가 @Configuration annotation을 필요로하는 이유는 무엇입니까?

SPRING

Spring Boot Application 클래스가 @Configuration annotation을 필요로하는 이유는 무엇입니까?

Spring Framework에 대해 배우고 있지만 @Configuration 주석의 의미와 주석을 달아야하는 클래스를 정확히 이해할 수 없습니다. Spring Boot 문서에서는 Application 클래스가 @Configuration 클래스 여야한다고합니다.

@Configuration에 대해 배우기 @Configuration을 사용하여 클래스에 주석을 추가하면 Spring IoC 컨테이너가 Bean 정의의 소스로 클래스를 사용할 수 있음을 알 수있다.

그렇다면이 애플리케이션 클래스는 어떻게 bean 정의의 소스인가?

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class App 
{
    public static void main(String[] args) throws Exception {
        SpringApplication.run(App.class, args);    
    }
}

Spring에 관한 다른 대부분의 기본 개념을 거의 이해했지만 @Configuration의 목적이나 @Configuration 클래스가되어야하는 클래스를 이해할 수 없습니까? 누군가 제발 도와 줄 수 있어요. 감사 !!

해결법

  1. ==============================

    1.너는 그것을 올바르게 이해했다.

    너는 그것을 올바르게 이해했다.

    @Configuration은 xml 파일의 아날로그 형식입니다. 이러한 클래스는 @Bean 어노테이션으로 메소드를 정의함으로써 bean 정의의 소스이다.

    @Configuration은 다음과 같습니다.

    가독성을 위해 소스로 명시 적으로 전달되는 클래스에도 어쨌든 @Configuration 주석을 달아서 의도를보다 명확하게 보여줄 수 있습니다.

    현재 클래스는 bean 정의의 소스가 아니며 아무 것도 가지고 있지 않기 때문에 @Bean 주석이있는 메소드가 있다면 Spring은 그것을 볼 것이다.

    @Configuration의 유무와 상관없이 사용할 수 있습니다. 클래스 패스에있는 것으로 판단하여 기본 인프라를 설정하도록 Spring에 지시합니다. @EnableAutoConfiguration에 포함 된 @Import 주석의 값에서 파생 된 이른바 import 클래스를 호출하면됩니다. 하나의 클래스 만 @EnableAutoConfiguration으로 주석을 달아야합니다. 복제는 아무 것도하지 않습니다.

    이 대답은 스프링 부트 초기화 프로세스를 이해하는 데 도움이 될 수 있습니다. 스프링 부트의 어떤 코드가 SpringMVC 용 디스패처 서블릿을 실제로 등록합니까?

  2. ==============================

    2.나는 Spring Boot의 @SpringBootApplication annotation이 @Configuration을 자동으로 적용하는 주된 이유가 바로 같은 클래스에 bean 정의를 추가 할 수있게하는 것이라고 생각한다. Spring Boot의 주요 목표 중 하나는 추가 동작없이 애플리케이션을 신속하게 생성 할 수 있도록하는 것입니다. 따라서 Bean 정의를 응용 프로그램 클래스에 바로 추가 할 수 있으므로 구성을 보유 할 추가 클래스를 만들 필요가 없습니다. 당신은 단 1 개의 반을 가지고 있으며 그게 전부입니다.

    나는 Spring Boot의 @SpringBootApplication annotation이 @Configuration을 자동으로 적용하는 주된 이유가 바로 같은 클래스에 bean 정의를 추가 할 수있게하는 것이라고 생각한다. Spring Boot의 주요 목표 중 하나는 추가 동작없이 애플리케이션을 신속하게 생성 할 수 있도록하는 것입니다. 따라서 Bean 정의를 응용 프로그램 클래스에 바로 추가 할 수 있으므로 구성을 보유 할 추가 클래스를 만들 필요가 없습니다. 당신은 단 1 개의 반을 가지고 있으며 그게 전부입니다.

  3. from https://stackoverflow.com/questions/39247487/why-spring-boot-application-class-needs-to-have-configuration-annotation by cc-by-sa and MIT license