2008-08-12 1 views
26

저는 현재 Spring 프레임 워크로 Java EE 개발을 시도하고 있습니다. Spring을 처음 접했을 때 좋은 실행중인 프로젝트가 어떻게 시작되어야하는지 이미징하기 란 어렵습니다. 첫 번째 Java EE Spring 프로젝트에 대한 "우수 사례"는 무엇입니까?

는 선발에 대한 모범 사례, 계약 및 프로모션 추천 자료 비즈니스 디렉토리 리뷰 또는 주요 DO NOT으로이 있습니까? 큰 프로젝트 또는 자습서와 같은 작은 응용 프로그램과 같이 Spring을 어떻게 시작 했습니까? 어떤 기술을 즉시 사용 했습니까? AOP, 복잡한 최대 절전 모드 ...

+0

한 번에 두 개가 있어야합니까? Java EE가 새로 도입 된 것인지 확실하지 않은 경우 한 번에 하나씩 처리하는 것이 더 쉬울 것입니다. – SteveD

답변

22

작은 팁 - 애플리케이션 관심사를 기반으로 Spring XML 컨텍스트 파일을 모듈화하고 명확하게 레이블링하는 것이 도움이된다는 것을 알았습니다. 저는 여기에 일 웹 응용 프로그램에 대한 예는 다음과 같습니다

  • MyProject/src/main/resources/spring /
    • datasource.xml - 내 단일 데이터 소스 콩.
    • persistence.xml - 내 DAO/리포지토리. 콩 datasource.xml에 따라 다릅니다.
    • services.xml - 서비스 계층 구현. 이들은 일반적으로 AOP를 사용하여 트랜잭션을 적용하는 빈입니다. 콩 persistence.xml에 따라 다릅니다.
    • controllers.xml - My Spring MVC 컨트롤러. 콩 services.xml에 따라 다릅니다.
    • views.xml - 내보기 구현.

이 목록은 완벽한도 철저한도하지만, 나는이 점을 보여 바랍니다. 어떤 이름 지정 전략과 세분성이 가장 적합한 지 선택하십시오.내 (제한적) 경험에

, 나는이 방법은 다음과 같은 이점 yeild 본 적이 :

선명 아키텍처

분명히라는 이름의 컨텍스트 파일은 프로젝트 구조 합리적인 장소에 익숙하지 않은 사용자를 제공합니다 bean 정의를 찾는다. 순환/원치 않는 의존성을 좀 더 쉽게 감지 할 수 있습니다. 아마도 신흥 새로운 개념이나 문제가, 당신은 bean 정의를 추가하려면

도메인 디자인을

도움을줍니다, 그러나 당신의 컨텍스트 파일의 잘 맞지 않는? 예 :

  • AOP를 사용하여 서비스 계층을 트랜잭션으로 만들려한다고 가정합니다. 빈 정의를 services.xml에 추가 하시겠습니까? 아니면 자신의 transactionPolicy.xml에 넣으시겠습니까? 팀과상의하십시오. 거래 정책을 플러그 할 수 있어야합니까?
  • controllers.xml 파일에 Acegi/Spring Security beans를 추가하거나 security.xml 컨텍스트 파일을 만드시겠습니까? 서로 다른 배포/환경에 대해 서로 다른 보안 요구 사항이 있습니까?

통합 테스트

당신은 통합 테스트를위한 응용 프로그램의 일부까지 연결할 수 있습니다 (예를 : 위의 파일 제공, 당신은 단지 datasource.xmlpersistence.xml 콩을 만드는 데 필요한 데이터베이스를 테스트하기 위해).

특히, 같은 통합 테스트 클래스에 주석을 달 수 있습니다

@ContextConfiguration(locations = { "/spring/datasource.xml" , "/spring/persistence.xml" }) 

작품 아니라 봄 IDE의 콩을 그래프

에게 집중하고 잘 명명 컨텍스트 파일을 갖는 많이하기 쉽게 만든다 Spring IDE의 Beans Graph을 사용하여 앱의 레이어를 시각화하기 위해 맞춤 BeansConfigSets를 생성하십시오. 필자는 새로운 팀원들에게 우리 애플리케이션의 조직에 대한 높은 수준의 개요를 제공하기 위해 이것을 사용했습니다.

2

스프링을 사용한 이래로 몇 년이 지났지 만, 나는 그 팬이었습니다. App Fuse 도구 https://java.net/projects/appfuse/)는 사람들이 나가야하는 모든 아티팩트를 생성하는 측면에서 사람들을 돕는 데 도움이되었습니다.

14

먼저 Spring의 핵심 인 Dependency Injection에 중점을 둡니다. 일단 DI가 사용될 수있는 모든 방법을 본다면, AOP, Remoting, JDBC Templates 등과 같은 흥미로운 부분에 대해 생각하기 시작하십시오. 따라서 조언을위한 최고의 조언은 Spring을 코어에서 사용하도록합니다.

모범 사례? 표준 XML 구성을 사용하는 경우 개별 파일의 크기를 관리하고 적절하게 주석을 달 수 있습니다. 여러분과 다른 사람들이 여러분의 bean 정의를 완벽하게 이해할 것이라고 생각할 수도 있지만 실제로는 평범한 자바 코드보다 되돌아 오는 것이 다소 어렵습니다.

행운을 빈다.

3

내가 사실은 꽤 그것은 내가 예제 봄이 제공하는 구현하는 것이 좋습니다 신선한 평균 J2EE 자바 콩 공기의 바람 ..

했다 .. 봄을 좋아 :

http://static.springframework.org/docs/Spring-MVC-step-by-step/

을 또한, 나는) Spring이 Hibernate에 대한 우수한 지원을 제공하기 때문에 ...) :

나는 어려운 방법을 배웠다. (pr oduction) ... 컨트롤러 인터페이스 만 구현하고 인터페이스에 제공된 일부 데이터가있는 ModelAndView 객체를 반환하면 Spring은 해당 데이터를 캐싱하려고 시도 할 때 해당 리소스를 수집합니다. 따라서 ModelOndView 객체에 대용량 데이터를 두는 것은주의해야합니다. 서버가 대기 상태에있는 한 서버 메모리를 계속 사용하기 때문입니다 ...

+0

하이퍼 링크의 멋진 책 – Anirudh

2

좋은 방법은 시작된 것은 "Springframework"에 집중하는 것입니다. Spring 포트폴리오는 Enterprise Software의 다양한 측면에 대한 프로젝트의 큰 더미로 성장했습니다. 처음에는 핵심에 집중하고 개념을 파악하려고 노력하십시오. Download 최신 바이너리를 확인하고 코어에 익숙하면 Spring의 petclinic 예제를 확인하십시오. SpringSource가 제공해야하는 다양한 프로젝트에 대한 좋은 개요를 제공합니다.

설명서의 내용은 매우 좋지만 I'd recommend a book 핵심 개념을 이해하고 나면. 문서에서 문제가되는 부분은 심층적이지 않고 필요한 모든 세부 정보를 제공 할 수 없다는 것입니다.

1

스프링은 단위 테스트 및 클래스 테스트 용이성에 관한 내용이기도합니다. 기본적으로 모듈화, 관심사 분리, 인터페이스를 통한 클래스 참조 등을 의미합니다.

1

조금만 들여다보고 싶은지 알고 싶다면 Spring의 JDBC 및/또는 Hibernate 지원을 사용하여 DAO 계층부터 시작하는 것이 좋습니다. 이렇게하면 많은 핵심 개념을 접할 수 있지만 나머지 앱과 쉽게 분리 할 수 ​​있습니다. 이것이 내가 따라 갔던 길입니다. 스프링으로 전체 어플리케이션을 만들기 전에 워밍업이 좋았습니다.

3

여기에서 시작 - 실제로 내가 읽은 최고의 소프트웨어 Dev 책 중 하나라고 생각합니다.
Expert Spring MVC And Web Flow

MVC 클래스에 대한 새로운 어노테이션 기반 구성을 학습하십시오. 이것은 Spring 2.5의 일부이다. 어노테이션 기반 클래스를 사용하면 단위 테스트를 훨씬 쉽게 작성할 수 있습니다. 또한 XML의 양을 줄일 수 있다는 것은 좋은 일입니다.

오, 예 단위 테스트 - 당신이 봄을 사용한다면 단위 테스트가 더 나은 것입니다. :) Write Unit 테스트는 모든 웹 및 서비스 레이어 클래스를 테스트합니다.

도메인 기반 디자인을 읽으십시오. Spring Application의 모든 레벨에서 Domain Object 클래스를 사용할 수 있다는 사실은 아주 강력한 도메인 모델을 가질 수 있음을 의미합니다. 그것을 활용하십시오.

그러나 양식 채우기에 도메인 개체 클래스를 사용하는 경우 Spring Framework와 관련된 최근의 보안 문제를 염두에 두어야합니다. A discussion on the Server Side은 댓글의 구멍을 닫을 수있는 방법을 보여줍니다.

2

"어떤 기술을 즉시 사용 했습니까? AOP, 복잡한 최대 절전 모드 ..."- 사람들이 당장 사용하지 않은 것을 묻는 것이 더 나은 질문 일 것입니다. 그 목록에 인용 한 예제를 추가합니다.

스프링 MVC 및 JDBC 템플릿이 필자의 권장 사항입니다. 그것들과 함께 아주 먼 길을 갈 수 있습니다.

내 권장 사항은 Spring 아키텍처 권장 사항을 충실히 따르는 것입니다. 레이어링 아이디어를 사용하십시오. 웹 레이어가 나머지에서 완전히 분리 될 수 있는지 확인하십시오. 웹 계층이 서비스 계층을 통해서만 백엔드와 상호 작용하도록함으로써이 작업을 수행 할 수 있습니다.

해당 서비스 레이어를 다시 사용하려는 경우 Spring "contract first"웹 서비스를 사용하여 해당 서비스 레이어를 노출하는 것이 좋습니다. 앞뒤로 전달되는 XML 메시지로 시작하면 클라이언트와 서버를 완전히 분리 할 수 ​​있습니다.

최상의 스프링 지원 IDE는 IntelliJ입니다.몇 달러를 쓸 가치가 있습니다.

1

스프링 2.5와 3.0이 출시되면서 지금 가장 중요한 모범 사례 중 하나가 스프링 어노테이션입니다. 컨트롤러, 서비스 및 저장소에 대한 주석은 많은 시간을 절약하고 앱의 비즈니스 로직에 집중할 수있게하며 잠재적으로 모든 객체를 POJO (일반 오래된 Java 객체)로 만들 수 있습니다.

4

먼저 스프링은 모듈성에 관한 것이고, 한 가지 일을 잘 수행하는 작은 구성 요소를 작성하는 데 중점을두면 가장 잘 작동합니다.

  • 는 하나의 클래스에 대해 가능한 몇 가지로 종속성을 유지 불변의 유형을 만들기

    • 인터페이스를 정의하는 대신 추상 클래스
    • :

      당신은 가장 일반적으로 같은 관행을 따르십시오.

    • 각 클래스는 한 가지 작업을 잘 수행해야합니다. 거대한 모 놀리 식 수업은 빨기 때문에 테스트하기가 어렵고 사용하기가 어렵습니다.

    구성 요소가 작고 위의 교리를 따르는 경우 다른 구성 요소와 쉽게 연결하고 재생해야합니다. 위의 사항은 Spring 프레임 워크 자체에서도 마찬가지입니다.

    PS

    그나마 위의 점을 들어, 그들은 어떤 작업을 수행하는 방법에 대해 말하고있다. 더 중요한 것은 어떻게해야하는지보다는 사고하는 법을 배우는 것입니다. 인간은 뭔가를 반복하는 것이 영리하지 않다고 생각할 수 있습니다. 생각은 있습니다.

  • 관련 문제