2016-08-01 2 views
0

Spring bean과 JavaEE의 차이점에 대해 작은 질문이 있습니다. 구성에서 Spring의 일부 Bean을 정의해야하는 이유는 무엇입니까? JavaEE가 아닌가요?Spring Beans 선언의 이유 (일부)

감사합니다.

답변

2

이것은 작은 질문이 아닙니다.

JavaEE는 표준 방식으로 서비스를 제공하는 컨테이너를 가졌다 고 가정합니다. 특정 버전의 스펙에 설명 된 일부 또는 모든 API를 구현하는 응용 프로그램 서버에서 응용 프로그램을 실행합니다. Servlet, JSP, 트랜잭션 관리, JPA, CDI, 인증 및 권한 부여 ...

Spring은 대부분 EJB 2의 루틴에서 태어난 다른 짐승입니다. 초기 200x. 먼저 전체 컨테이너 (데이터 계층을 다르게 수행 할 수 있음을 의미)를 필요로하지 않으며 종속성 주입 (DI)의 이점을 얻을 수 있음을 보여줍니다. 처음에는 Spring이 XML 파일을 통해 수행되는 DI에 관한 것이 었습니다. 이것들은 당신이 언급하고있는 설정 파일입니다. Spring Integration, Spring Web Services, Spring Data, Spring Boot, JavaEE와의 경쟁 기능 등 다양한 하위 프로젝트가있었습니다. EJB 2는 Hibernate에서 영감을 얻은 EJB 3에 찬성하여 삭제되었습니다. 주석은 구성 파일 등으로 선호되었습니다. 이것은 매우 유기적 인 프로세스로 좋은 아이디어가 개선되도록 노력했습니다. 아직 XML 파일에서 구성 클래스에 흩어져있는 주석과 구성 전용 클래스에서 구성이 유지되었습니다. 이는 Spring의 단점으로 볼 수 있지만이 복잡성으로 인해 엄청난 양의 데이터를 통합 할 수 있습니다 libs와 middlewares를 사용하고 응용 프로그램을 사용자가 보게되는 모양으로 만듭니다.

JavaEE와 Spring은 최근 경쟁이 치열 해지고 있습니다. JavaEE는 최근에 Spring의 훌륭한 아이디어 중 일부를 취하고 있습니다 (예 : CDI). 그러나 각각의 컨테이너가 기본 컨테이너에 제공하는 역할은 완전히 다릅니다.

+0

자세한 답변 해 주셔서 감사합니다. 그러나 당신의 대답을 봄에 왜 콩을 정의하는 것이 Spring에서 필요한지 불분명합니다. 표준 JavaEE 애플리케이션에서 내가 원하는 모든 클래스를 주입 할 수있다. Spring에서는 Bean 미리 머리를 정의 할 필요가 있습니다. 아니면 "용기"가 유일한 이유입니까? 나는 Spring 애플리케이션 컨텍스트가 일종의 컨테이너라고 생각했다. – smsnheck

+0

내가 할 수 있는지 명확히하려고 노력할 것이다. 그러나 내가 말했듯이 그것은 작은 질문이 아니다. JavaEE는 모두 컨테이너에 관한 것입니다. 서블릿과 EJB 컨테이너가 있었는데 요즘에는 프로파일에 대해 이야기 할 것이고, 웹 프로파일은 서블릿 컨테이너의 진화라고 할 수 있습니다. 그러나이 컨테이너에는 소위 엔터프라이즈 애플 리케이션에 대한 작업을 수행하는 방법에 대한 의견이 있습니다. Spring의 컨테이너는 DI 컨테이너입니다. XML, 주석 및 구성 요소 스캔, Java 구성과 같은 선언 형식을 기반으로 한 와이어 오브젝트 이외의 기능은 제공하지 않습니다. 어떤 기술로 무엇을 연결할지 결정하는 것은 당신의 것이 었습니다. –

+0

감사합니다. 이제 나는이 원리들을 이해한다. – smsnheck

관련 문제