2008-08-12 39 views
26

Tôi hiện đang cố gắng phát triển Java EE với khung công tác Spring. Vì tôi mới làm quen với Spring, thật khó để hình dung một dự án đang chạy tốt nên bắt đầu như thế nào."Phương pháp hay nhất" của bạn cho dự án Java EE Spring đầu tiên là gì?

Bạn có bất cứ thực hành tốt nhất, Tipps hoặc DO nots lớn cho một khởi động? Làm thế nào bạn bắt đầu với Spring - dự án lớn hoặc các ứng dụng nhỏ như hướng dẫn? Bạn đã sử dụng công nghệ nào ngay lập tức: AOP, Hibernate phức tạp ...

+0

Có phải là cả hai cùng một lúc? Việc giải quyết từng người một sẽ dễ dàng hơn nếu bạn mới làm quen với cả hai (không rõ ràng nếu Java EE là mới đối với bạn). – SteveD

Trả lời

22

Mẹo nhỏ - Tôi thấy hữu ích khi mô đun hóa và gắn nhãn rõ ràng các tệp ngữ cảnh Spring xml của tôi dựa trên mối quan tâm của ứng dụng. Dưới đây là một ví dụ cho một ứng dụng web tôi làm việc trên:

  • MyProject/src/main/resources/spring /
    • datasource.xml - single đậu nguồn dữ liệu của tôi.
    • persistence.xml - DAO/kho lưu trữ của tôi. Phụ thuộc vào datasource.xml đậu.
    • services.xml - Triển khai lớp dịch vụ. Đây thường là những hạt mà tôi áp dụng giao dịch bằng AOP. Phụ thuộc vào persistence.xml đậu.
    • controllers.xml - Bộ điều khiển MVC Spring của tôi. Phụ thuộc vào services.xml đậu.
    • lượt xem.xml - Triển khai chế độ xem của tôi.

Danh sách này không hoàn hảo hoặc không đầy đủ, nhưng tôi hy vọng nó minh họa điểm. Chọn bất kỳ chiến lược đặt tên và chi tiết nào phù hợp nhất với bạn.

Trong tôi kinh nghiệm (giới hạn), tôi đã nhìn thấy phương pháp này năng suất các lợi ích sau:

rõ hơn kiến ​​trúc

tên Rõ ràng file bối cảnh cho những người không quen với cấu trúc dự án của bạn một nơi hợp lý để bắt đầu tìm kiếm các định nghĩa bean. Có thể phát hiện các phụ thuộc tròn/không mong muốn dễ dàng hơn một chút.

Giúp thiết kế miền

Nếu bạn muốn thêm một định nghĩa bean, nhưng nó không phù hợp tốt trong bất kỳ tập tin ngữ cảnh của bạn, có lẽ có một khái niệm mới hoặc mối quan tâm mới nổi? Ví dụ:

  • Giả sử bạn muốn thực hiện giao dịch lớp dịch vụ của mình với AOP. Bạn có thêm các định nghĩa bean đó vào services.xml hoặc đặt chúng trong số transactionPolicy.xml của riêng chúng không? Nói chuyện với đội của bạn. Chính sách giao dịch của bạn có nên được kết nối không?
  • Thêm hạt an ninh Acegi/Spring vào tệp controllers.xml của bạn hoặc tạo tệp ngữ cảnh security.xml? Bạn có yêu cầu bảo mật khác nhau cho các triển khai/môi trường khác nhau không?

Tích hợp thử nghiệm

Bạn có thể dây lên một tập hợp con của ứng dụng của bạn để thử nghiệm hội nhập (ví dụ: cho các tập tin trên, để kiểm tra cơ sở dữ liệu bạn cần để tạo ra chỉ datasource.xmlpersistence.xml đậu).

Cụ thể, bạn có thể chú thích một lớp thử nghiệm hội nhập như vậy:

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

trình tốt với Đậu Xuân IDE của Graph

Có rất nhiều tác phẩm bối cảnh tập trung và nổi tên làm cho nó dễ dàng để tạo BeansConfigSets tùy chỉnh để trực quan hóa các lớp ứng dụng của bạn bằng cách sử dụng Beans Graph của Spring IDE. Tôi đã sử dụng điều này trước đây để cung cấp cho các thành viên nhóm mới một cái nhìn tổng quan cấp cao về tổ chức của ứng dụng của chúng tôi.

2

Mặc dù đã nhiều năm kể từ khi tôi sử dụng mùa xuân và tôi không thể nói tôi là fan của nó, tôi biết rằng công cụ App Fuse (https://java.net/projects/appfuse/) rất hữu ích để giúp mọi người bootstrap về tạo ra tất cả các hiện vật bạn cần để có được đi.

14

Tập trung đầu tiên vào trung tâm của Spring: Dependency Injection. Một khi bạn nhìn thấy tất cả các cách mà DI có thể được sử dụng, sau đó bắt đầu suy nghĩ về những phần thú vị hơn như AOP, Remoting, JDBC Templates vv Vì vậy, lời khuyên tốt nhất của tôi là cho phép bạn sử dụng Spring phát triển từ cốt lõi.

Thực tiễn tốt nhất? Nếu bạn đang sử dụng cấu hình XML chuẩn, hãy quản lý kích thước của các tệp riêng lẻ và nhận xét chúng một cách thận trọng. Bạn có thể nghĩ rằng bạn và những người khác sẽ hoàn toàn hiểu được các định nghĩa bean của bạn, nhưng trong thực tế chúng có phần khó hơn để trở lại với mã java cũ hơn.

Chúc may mắn!

3

Tôi thực sự rất thích mùa xuân .. Đó là một làn gió trong lành của không khí trung bình Đậu J2EE Java của bạn ..

Tôi khuyên bạn nên thực hiện các ví dụ Spring cung cấp:

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

Ngoài ra, tôi quyết định đi monty đầy đủ và thêm Hibernate vào ứng dụng Spring của tôi;), bởi vì Spring cung cấp hỗ trợ tuyệt vời cho Hibernate ... :)

Tôi có một tuy nhiên, mà tôi đã học được cách cứng (sản phẩm trong pr oduction) ... Nếu bạn chỉ thực hiện giao diện Controller và trả về một đối tượng ModelAndView với một số dữ liệu như được cung cấp với giao diện, Spring sẽ thu thập các tài nguyên đó, để cố gắng lưu trữ dữ liệu đó. Vì vậy, hãy cẩn thận để đặt dữ liệu lớn trong các đối tượng ModelAndView đó, vì chúng sẽ nâng cấp bộ nhớ máy chủ của bạn miễn là máy chủ đang ở trong không khí ngay khi trang đó được xem ...

+0

Sách đẹp trong siêu liên kết – Anirudh

2

Một cách tốt để có được bắt đầu là tập trung vào "Springframework". Danh mục đầu tư mùa xuân đã phát triển thành một đống lớn các dự án xung quanh các khía cạnh khác nhau của Phần mềm doanh nghiệp. Dính vào lõi ngay từ đầu và cố gắng nắm bắt các khái niệm. Download các tệp nhị phân mới nhất và xem ví dụ về thú cưng của Spring khi bạn đã quen với lõi. Nó cung cấp một cái nhìn tổng quan tốt về các dự án khác nhau mà SpringSource cung cấp.

Mặc dù tài liệu rất tốt, I'd recommend a book sau khi bạn nắm được các khái niệm về lõi. Những gì tôi đã tìm thấy vấn đề với các tài liệu, là nó không sâu và không thể cung cấp cho bạn tất cả các chi tiết bạn cần.

1

Mùa xuân cũng rất nhiều về thử nghiệm đơn vị và do đó kiểm tra các lớp học của bạn. Điều đó về cơ bản có nghĩa là suy nghĩ về mô đun hóa, tách mối quan tâm, tham khảo một lớp thông qua giao diện, v.v.

1

Nếu bạn chỉ muốn tìm hiểu một chút và xem bạn có thích nó không, tôi khuyên bạn nên bắt đầu với lớp DAO, sử dụng hỗ trợ JDBC và/hoặc Hibernate của Spring. Điều này sẽ cho bạn thấy nhiều khái niệm cốt lõi, nhưng làm như vậy theo cách dễ dàng tách biệt với phần còn lại của ứng dụng của bạn. Đây là con đường tôi theo sau, và nó đã được khởi động tốt trước khi xây dựng một ứng dụng đầy đủ với Spring.

3

Bắt đầu ở đây - Tôi thực sự nghĩ rằng đó là một trong những cuốn sách về Phần mềm tốt nhất mà tôi đã đọc.
Expert Spring MVC And Web Flow

Tìm hiểu cấu hình dựa trên chú thích mới cho lớp MVC. Đây là một phần của Spring 2.5. Sử dụng các lớp dựa trên chú thích sẽ làm cho việc viết bài kiểm tra đơn vị trở nên dễ dàng hơn rất nhiều. Cũng có thể cắt giảm số lượng XML là một điều tốt.

Oh yeah Kiểm tra đơn vị - nếu bạn đang sử dụng Spring, bạn TỐT hơn là Kiểm tra đơn vị. :) Viết các bài kiểm tra Đơn vị cho tất cả các lớp Web và Lớp Dịch vụ của bạn.

Đọc trên Thiết kế Driven miền. Thực tế là bạn có thể sử dụng các lớp đối tượng miền ở tất cả các cấp của một ứng dụng Spring có nghĩa là bạn sẽ có một mô hình miền rất mạnh. Tận dụng nó.

Tuy nhiên, khi sử dụng các lớp đối tượng tên miền của bạn cho dân số biểu mẫu, bạn sẽ muốn chú ý đến các mối quan tâm bảo mật gần đây quanh Spring Framework. A discussion on the Server Side cho biết cách đóng lỗ trong các bình luận.

2

"... Bạn đã sử dụng công nghệ nào ngay lập tức: AOP, Hibernate phức tạp ..." - Tôi muốn đặt câu hỏi hay hơn là hỏi những gì mọi người không sử dụng ngay lập tức. Tôi sẽ thêm các ví dụ bạn trích dẫn vào danh sách đó.

Mẫu MVC và JDBC Spring sẽ là đề xuất bắt đầu của tôi. Bạn có thể đi một chặng đường rất dài chỉ với những người đó.

Đề xuất của tôi sẽ tuân theo các khuyến nghị kiến ​​trúc mùa xuân một cách trung thực. Sử dụng ý tưởng phân lớp của họ. Đảm bảo rằng lớp web của bạn hoàn toàn có thể tháo rời khỏi phần còn lại. Bạn làm điều này bằng cách cho phép tầng web tương tác với phần cuối chỉ thông qua lớp dịch vụ.

Nếu bạn muốn sử dụng lại lớp dịch vụ đó, một khuyến nghị tốt là để hiển thị nó bằng dịch vụ web "hợp đồng đầu tiên" của Spring. Nếu bạn bắt đầu với các thông báo XML mà bạn truyền qua lại, máy khách và máy chủ của bạn có thể được tách hoàn toàn.

IDE có hỗ trợ Spring tốt nhất là IntelliJ.Nó đáng giá một vài đô.

1

Với việc phát hành Spring 2.5 và 3.0, tôi nghĩ rằng một trong những thực tiễn tốt nhất quan trọng nhất để tận dụng lợi thế bây giờ là các chú thích Spring. Chú thích cho Bộ điều khiển, Dịch vụ và Kho lưu trữ có thể giúp bạn tiết kiệm rất nhiều thời gian, cho phép bạn tập trung vào logic nghiệp vụ của ứng dụng và có khả năng tất cả các bạn làm cho tất cả đối tượng Java thuần túy của đối tượng của bạn (POJO).

4

Đầu tiên của mùa xuân là về mô đun và hoạt động tốt nhất nếu tập trung vào viết các thành phần nhỏ làm một việc và làm tốt.

Nếu bạn làm theo thông lệ tốt nhất trong chung chung như:

  • Xác định một giao diện chứ không phải là lớp trừu tượng
  • Making loại không thay đổi
  • Giữ phụ thuộc càng ít càng tốt cho một lớp duy nhất.
  • Mỗi lớp nên làm một việc và làm tốt. Các lớp học nguyên khối lớn hút, chúng khó kiểm tra và khó sử dụng.

Nếu các thành phần của bạn nhỏ và theo các dogmas ở trên, chúng sẽ dễ dàng kết nối và chơi với các thứ khác. Các điểm trên cũng tự nhiên đúng với khung Spring.

PS

Dont lắng nghe những điểm nêu trên, họ đang nói về làm thế nào để làm bất cứ điều gì. Điều quan trọng hơn là học cách suy nghĩ thay vì cách làm điều gì đó. Con người có thể nghĩ, lặp lại cái gì đó không thông minh, suy nghĩ là.

Các vấn đề liên quan