Alex Rivera | Logout

What's your "best practice" for the first Java EE Spring project?

Asked 2008-08-12T07:36:14.107
32

I'm currently trying to get into the Java EE development with the Spring framework. As I'm new to Spring, it is hard to imaging how a good running project should start off.

Do you have any best practices, tipps or major DO NOTs for a starter? How did you start with Spring - big project or small tutorial-like applications? Which technology did you use right away: AOP, complex Hibernate...

Edit
Report

1 Answer

28

Small tip - I've found it helpful to modularize and clearly label my Spring xml context files based on application concern. Here's an example for a web app I worked on:

  • MyProject / src / main / resources / spring /
    • datasource.xml - My single data source bean.
    • persistence.xml - My DAOs/Repositories. Depends on datasource.xml beans.
    • services.xml - Service layer implementations. These are usually the beans to which I apply transactionality using AOP. Depends on persistence.xml beans.
    • controllers.xml - My Spring MVC controllers. Depends on services.xml beans.
    • views.xml - My view implementations.

This list is neither perfect nor exhaustive, but I hope it illustrates the point. Choose whatever naming strategy and granularity works best for you.

In my (limited) experience, I've seen this approach yeild the following benefits:

Clearer architecture

Clearly named context files gives those unfamiliar with your project structure a reasonable place to start looking for bean definitions. Can make detecting circular/unwanted dependencies a little easier.

Helps domain design

If you want to add a bean definition, but it doesn't fit well in any of your context files, perhaps there's a new concept or concern emerging? Examples:

  • Suppose you want to make your Service layer transactional with AOP. Do you add those bean definitions to services.xml, or put them in their own transactionPolicy.xml? Talk it over with your team. Should your transaction policy be pluggable?
  • Add Acegi/Spring Security beans to your controllers.xml file, or create a security.xml context file? D
answered 2008-08-16T21:12:19.233

Your Answer