첫 번째 Java EE Spring 프로젝트에 대한 "모범 사례"는 무엇입니까?[닫은]

StackOverflow https://stackoverflow.com/questions/8569

  •  08-06-2019
  •  | 
  •  

문제

저는 현재 Spring 프레임워크를 사용하여 Java EE 개발을 시작하려고 합니다.저는 Spring을 처음 접하기 때문에 잘 실행되는 프로젝트가 어떻게 시작되어야 하는지 상상하기 어렵습니다.

혹시 갖고 계시나요? 모범 사례, 팁 또는 메이저 하지 마십시오 우선?큰 프로젝트 또는 작은 튜토리얼 같은 애플리케이션인 Spring을 어떻게 시작하셨나요?바로 어떤 기술을 사용하셨나요?AOP, 복잡한 Hibernate...

도움이 되었습니까?

해결책

작은 팁 - 애플리케이션 문제에 따라 Spring xml 컨텍스트 파일을 모듈화하고 명확하게 레이블을 지정하는 것이 도움이 된다는 것을 알았습니다.다음은 제가 작업한 웹 앱의 예입니다.

  • MyProject / src / main / resources / spring /
    • 데이터소스.xml - 내 단일 데이터 소스 Bean입니다.
    • 지속성.xml - 내 DAO/저장소.에 따라 다름 datasource.xml 콩.
    • 서비스.xml - 서비스 계층 구현.이는 일반적으로 AOP를 사용하여 트랜잭션을 적용하는 Bean입니다.에 따라 다름 persistence.xml 콩.
    • 컨트롤러.xml - 내 Spring MVC 컨트롤러.에 따라 다름 services.xml 콩.
    • views.xml - 내 뷰 구현.

이 목록은 완벽하지도, 완전하지도 않지만 요점을 설명해주기를 바랍니다.귀하에게 가장 적합한 명명 전략과 세분성을 선택하십시오.

내 (제한된) 경험에 따르면 이 접근 방식은 다음과 같은 이점을 제공합니다.

더욱 명확한 아키텍처

명확하게 명명 된 컨텍스트 파일은 프로젝트 구조에 익숙하지 않은 사람들에게 Bean 정의를 찾기 시작하기에 합리적인 장소를 제공합니다.순환/원치 않는 종속성을 좀 더 쉽게 감지할 수 있습니다.

도메인 설계에 도움이 됩니다.

빈 정의를 추가하고 싶지만 컨텍스트 파일에 잘 맞지 않는다면 아마도 새로운 개념이나 우려 사항이 떠오르고 있는 것일까요?예:

  • AOP를 사용하여 서비스 계층을 트랜잭션 가능하게 만들고 싶다고 가정해 보겠습니다.해당 빈 정의를 추가합니까? services.xml, 또는 자체적으로 넣습니다. transactionPolicy.xml?팀과 함께 논의하세요.귀하의 거래 정책은 연결 가능해야 합니까?
  • Acegi/Spring Security 빈을 controllers.xml 파일을 만들거나 security.xml 컨텍스트 파일?다양한 배포/환경에 대해 다양한 보안 요구 사항이 있습니까?

통합 테스트

통합 테스트를 위해 애플리케이션의 하위 집합을 연결할 수 있습니다(예:위의 파일이 주어지면 데이터베이스를 테스트하기 위해 생성하기만 하면 됩니다. datasource.xml 그리고 persistence.xml 콩).

특히 통합 테스트 클래스에 다음과 같이 주석을 달 수 있습니다.

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

Spring IDE의 Beans Graph와 잘 작동합니다.

집중적이고 이름이 잘 지정된 컨텍스트 파일이 많으면 Spring IDE를 사용하여 앱의 레이어를 시각화하는 사용자 정의 BeansConfigSet를 쉽게 만들 수 있습니다. 콩 그래프.나는 이전에 새로운 팀 구성원에게 애플리케이션 구성에 대한 높은 수준의 개요를 제공하기 위해 이것을 사용한 적이 있습니다.

다른 팁

먼저 Spring의 핵심에 집중하세요.의존성 주입.DI를 사용할 수 있는 모든 방법을 확인한 후에는 AOP, Remoting, JDBC 템플릿 등과 같은 더 흥미로운 부분에 대해 생각해 보세요.그래서 제가 드릴 수 있는 최선의 조언은 Spring의 사용이 핵심에서부터 성장하도록 하라는 것입니다.

모범 사례?표준 XML 구성을 사용하는 경우 개별 파일의 크기를 관리하고 신중하게 주석을 추가하세요.당신은 당신과 다른 사람들이 당신의 빈 정의를 완벽하게 이해할 것이라고 생각할 수도 있지만 실제로는 평범한 오래된 Java 코드보다 다시 돌아오기가 다소 어렵습니다.

행운을 빌어요!

우선 Spring은 모듈성에 관한 것이며 한 가지 일을 잘 수행하는 작은 구성 요소를 작성하는 데 집중할 때 가장 잘 작동합니다.

일반적으로 다음과 같은 모범 사례를 따르는 경우:

  • 추상 클래스가 아닌 인터페이스 정의
  • 유형을 불변으로 만들기
  • 단일 클래스에 대한 종속성을 가능한 한 적게 유지하십시오.
  • 각 수업은 한 가지 일을 하고 잘 해야 합니다.큰 모놀리식 클래스는 형편없으며, 테스트하기도 어렵고 사용하기도 어렵습니다.

구성 요소가 작고 위의 교리를 따르면 다른 구성 요소와 쉽게 연결하고 사용할 수 있습니다.위의 사항은 당연히 Spring 프레임워크 자체에서도 마찬가지입니다.

추신

위의 내용을 듣지 마십시오. 그들은 무엇이든 수행하는 방법에 대해 이야기하고 있습니다.어떤 일을 하는 방법보다 생각하는 방법을 배우는 것이 더 중요합니다.인간은 생각할 수 있지만, 무언가를 반복하는 것은 영리하지 않습니다.

사실 봄을 꽤 좋아했는데..평범한 J2EE Java Bean에 신선한 바람이 불어왔습니다.

Spring이 제공하는 예제를 구현하는 것이 좋습니다.

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

또한 나는 전액을 지불하기로 결정하고 Spring 애플리케이션에 Hibernate를 추가했습니다. ;) Spring은 Hibernate에 대한 탁월한 지원을 제공하기 때문입니다...:)

하지만 하지 말아야 할 것이 있는데, 이를 힘들게 배웠습니다(생산 중인 제품)...Controller 인터페이스만 구현하고 인터페이스와 함께 제공된 일부 데이터와 함께 ModelAndView 객체를 반환하는 경우 Spring은 해당 데이터를 캐시하려고 시도하기 위해 해당 리소스를 가비지 수집합니다.따라서 ModelAndView 객체에 대용량 데이터를 넣을 때는 주의하세요. 해당 페이지를 보자마자 서버가 공중에 있는 한 서버 메모리를 많이 차지하기 때문입니다.

여기서 시작하십시오. 실제로 제가 읽은 최고의 소프트웨어 개발 서적 중 하나라고 생각합니다.
전문적인 Spring MVC 및 웹 흐름

MVC 클래스에 대한 새로운 주석 기반 구성을 알아보세요.이는 Spring 2.5의 일부입니다.주석 기반 클래스를 사용하면 단위 테스트 작성이 훨씬 쉬워집니다.XML의 양을 줄일 수 있다는 것도 좋은 일입니다.

아, 단위 테스트 - Spring을 사용하고 있다면 단위 테스트를 하는 것이 더 좋습니다.:) 모든 웹 및 서비스 계층 클래스에 대한 단위 테스트를 작성하세요.

도메인 중심 설계를 읽어보세요.Spring 애플리케이션의 모든 수준에서 도메인 객체 클래스를 사용할 수 있다는 사실은 매우 강력한 도메인 모델을 갖게 된다는 것을 의미합니다.그것을 활용하세요.

그러나 양식 채우기를 위해 도메인 개체 클래스를 사용할 때 Spring Framework와 관련된 최근 보안 문제에 주의를 기울이고 싶을 것입니다. 서버 측에 대한 토론 댓글에 구멍을 막는 방법이 나와 있습니다.

시작하는 좋은 방법은 "Springframework"에 집중하는 것입니다.Spring 포트폴리오는 엔터프라이즈 소프트웨어의 다양한 측면에 관한 대규모 프로젝트 더미로 성장했습니다.처음에는 핵심에 충실하고 개념을 파악하도록 노력하세요. 다운로드 핵심에 익숙해지면 최신 바이너리를 다운로드하고 Spring의 petclinic 예제를 확인하세요.이는 SpringSource가 제공하는 다양한 프로젝트에 대한 좋은 개요를 제공합니다.

문서가 매우 훌륭하지만, 나는 책을 추천하고 싶다 핵심 개념을 파악한 후문서에서 내가 발견한 문제는 문서가 깊이가 없고 필요한 모든 세부 정보를 제공할 수 없다는 것입니다.

"...바로 어떤 기술을 사용하셨나요?AOP, complex Hibernate..." - 사람들이 바로 사용하지 않은 것이 무엇인지 물어보는 것이 더 좋은 질문이라고 말하고 싶습니다.귀하가 인용한 사례를 해당 목록에 추가하겠습니다.

Spring MVC와 JDBC 템플릿이 나의 시작 권장사항이 될 것입니다.그것만으로도 아주 먼 길을 갈 수 있습니다.

제가 추천하는 것은 Spring 아키텍처 권장 사항을 충실히 따르는 것입니다.레이어링 아이디어를 활용하세요.웹 레이어가 나머지 레이어와 완전히 분리 가능한지 확인하세요.웹 계층이 서비스 계층을 통해서만 백엔드와 상호 작용하도록 하여 이를 수행합니다.

해당 서비스 레이어를 재사용하려면 Spring의 "계약 우선" 웹 서비스를 사용하여 노출하는 것이 좋습니다.주고받는 XML 메시지로 시작하면 클라이언트와 서버가 완전히 분리될 수 있습니다.

최고의 Spring 지원을 제공하는 IDE는 IntelliJ입니다.몇 달러를 쓸 가치가 있습니다.

Spring을 사용한 지 수년이 지났고 Spring의 팬이라고 말할 수는 없지만 App Fuse 도구(https://java.net/projects/appfuse/)는 시작하는 데 필요한 모든 아티팩트를 생성하는 측면에서 사람들이 부트스트랩하는 데 도움이 되었습니다.

Spring은 또한 단위 테스트와 클래스 테스트 가능성에 관한 것입니다.이는 기본적으로 모듈화, 관심사 분리, 인터페이스를 통한 클래스 참조 등에 대해 생각하는 것을 의미합니다.

만약 당신이 그것을 조금 시도해 보고 마음에 드는지 확인하고 싶다면 Spring의 JDBC 및/또는 Hibernate 지원을 사용하여 DAO 레이어로 시작하는 것이 좋습니다.이렇게 하면 많은 핵심 개념이 노출되지만, 앱의 나머지 부분과 쉽게 분리할 수 있는 방식으로 수행해야 합니다.이것은 내가 따랐던 경로이며 Spring을 사용하여 전체 애플리케이션을 구축하기 전에 좋은 워밍업이었습니다.

Spring 2.5 및 3.0이 출시되면서 지금 활용해야 할 가장 중요한 모범 사례 중 하나가 Spring 주석이라고 생각합니다.컨트롤러, 서비스 및 저장소에 대한 주석을 사용하면 많은 시간을 절약할 수 있고 앱의 비즈니스 로직에 집중할 수 있으며 잠재적으로 모든 객체를 POJO(Plain Old Java Object)로 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top