전이 종속성이라고합니다. 스프링 - 코어를 선언하지 않으면 스프링 - 컨텍스트가 선언 했으므로 여전히이를 얻습니다.
전이 의존성 메커니즘 덕택에 스프링 코어를 선언했는지 여부에 관계없이 코드가 작동합니다. 그래서 이것은 최상의 실천의 문제이지 그것이 효과가 있는지 아닌지에 관한 문제는 아닙니다.
질문은 왜 스프링 코어가 필요한가요?
- 코드가 직접 참조하지 않는 경우 스프링 컨텍스트가 있더라도 필요하지 않습니다. 그래서 스프링 컨텍스트에서 스프링 코어가 필요하다고 선언하도록합니다. 직접 선언하지 마십시오.
- 코드에서 spring-core의 내용을 직접 참조하는 경우 스프링 컨텍스트가 필요한지 여부에 관계없이 코드가 필요합니다. 앞으로의 버전에서 스프링 - 컨텍스트는 더 이상 스프링 - 코어에 의존하지 않을 것입니다. 따라서 스프링 코어를 선언해야합니다.
한 문장으로, 당신도 명시 적으로 자신이 사용하는 의존성을 명시 적으로 선언해야합니다.
장난감 프로젝트에서는 중요하지 않습니다. 그러나 그것은 대규모 프로젝트에서 장기간 유지 보수를 훨씬 쉽게합니다.
편집 : 스프링 코어와 스프링 컨텍스트가 너무 밀접하게 연결되어 위의 조언은 중요하지 않습니다. 흔히의 경우 은입니다. 로깅 패키지 L에 의존하는 라이브러리 A를 사용하는 경우가 있습니다. 자신의 코드가 L을 사용하는 경우, A가 나중에 쉽게 사용할 수 있기 때문에 명시 적으로 종속성을 명시하는 것이 좋습니다. 다른 로깅 패키지. 다른 한편, 스프링 컨텍스트가 스프링 코어의 기능에 대해 다른 공급자로 전환 할 가능성은 적습니다 ...
이것은 메모리에서 왔기 때문에 comment vs answer ... spring-core는 스프링 컨텍스트에 나열된 종속성 일 가능성이 높습니다. 본질적으로 "포함 된"것은 아닙니다. Maven은 의존적 인 jar를 다운로드하지만, 애플리케이션이 spring-core에서 직접 뭔가를 사용한다면 스프링 컨텍스트에서 간접적 인 의존성을 가지더라도 의존성으로 나열해야한다. – Gus
@Gus이 댓글에 감사드립니다. –