[SPRING] Spring Boot Application 클래스가 @Configuration annotation을 필요로하는 이유는 무엇입니까?
SPRINGSpring 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.너는 그것을 올바르게 이해했다.
너는 그것을 올바르게 이해했다.
@Configuration은 xml 파일의 아날로그 형식입니다. 이러한 클래스는 @Bean 어노테이션으로 메소드를 정의함으로써 bean 정의의 소스이다.
@Configuration은 다음과 같습니다.
가독성을 위해 소스로 명시 적으로 전달되는 클래스에도 어쨌든 @Configuration 주석을 달아서 의도를보다 명확하게 보여줄 수 있습니다.
현재 클래스는 bean 정의의 소스가 아니며 아무 것도 가지고 있지 않기 때문에 @Bean 주석이있는 메소드가 있다면 Spring은 그것을 볼 것이다.
@Configuration의 유무와 상관없이 사용할 수 있습니다. 클래스 패스에있는 것으로 판단하여 기본 인프라를 설정하도록 Spring에 지시합니다. @EnableAutoConfiguration에 포함 된 @Import 주석의 값에서 파생 된 이른바 import 클래스를 호출하면됩니다. 하나의 클래스 만 @EnableAutoConfiguration으로 주석을 달아야합니다. 복제는 아무 것도하지 않습니다.
이 대답은 스프링 부트 초기화 프로세스를 이해하는 데 도움이 될 수 있습니다. 스프링 부트의 어떤 코드가 SpringMVC 용 디스패처 서블릿을 실제로 등록합니까?
-
==============================
2.나는 Spring Boot의 @SpringBootApplication annotation이 @Configuration을 자동으로 적용하는 주된 이유가 바로 같은 클래스에 bean 정의를 추가 할 수있게하는 것이라고 생각한다. Spring Boot의 주요 목표 중 하나는 추가 동작없이 애플리케이션을 신속하게 생성 할 수 있도록하는 것입니다. 따라서 Bean 정의를 응용 프로그램 클래스에 바로 추가 할 수 있으므로 구성을 보유 할 추가 클래스를 만들 필요가 없습니다. 당신은 단 1 개의 반을 가지고 있으며 그게 전부입니다.
나는 Spring Boot의 @SpringBootApplication annotation이 @Configuration을 자동으로 적용하는 주된 이유가 바로 같은 클래스에 bean 정의를 추가 할 수있게하는 것이라고 생각한다. Spring Boot의 주요 목표 중 하나는 추가 동작없이 애플리케이션을 신속하게 생성 할 수 있도록하는 것입니다. 따라서 Bean 정의를 응용 프로그램 클래스에 바로 추가 할 수 있으므로 구성을 보유 할 추가 클래스를 만들 필요가 없습니다. 당신은 단 1 개의 반을 가지고 있으며 그게 전부입니다.
from https://stackoverflow.com/questions/39247487/why-spring-boot-application-class-needs-to-have-configuration-annotation by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 동일한 데이터베이스 테이블에 두 개의 JPA 또는 Hibernate 엔티티를 매핑하는 방법 (0) | 2019.01.30 |
---|---|
[SPRING] classpath를 사용 : 봄 (0) | 2019.01.30 |
[SPRING] TransactionRequiredException 업데이트 / 삭제 쿼리 실행 (0) | 2019.01.30 |
[SPRING] 왜 항상 서비스 및 DAO 계층에 단일 구현 인터페이스가 있습니까? (0) | 2019.01.30 |
[SPRING] 스프링 유닛 테스트 중에 ApplicationContext를로드하지 못했습니다. (0) | 2019.01.30 |