Meaningless Drivel is fun!*
The moose likes Spring and the fly likes @Controller annotation query Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Frameworks » Spring
Bookmark "@Controller annotation query" Watch "@Controller annotation query" New topic
Author

@Controller annotation query

Abhay Agarwal
Ranch Hand

Joined: Feb 29, 2008
Posts: 1086
    
    1

Hi

I am new to Spring 3.0 and was just running one of the sample code of Spring MVC 3.0.

In sample code , i am using @Controller annotations.As we know that Controller can be Abstract Controller, SimpleFormController, MultiFormController etc.
When i placed @Controller above my POJO class definition (used for MVC operation), how Spring Annotation Handlers is deducing that this POJO class is to be treated as SimpleFormController class? not as MultiFormController class?




Oracle Java Web Service Developer (1z0-897), Oracle certified Java 7 Programmer, SCJA 1.0, SCJP 5.0, SCWCD 5.0, Oracle SQL Fundamentals I
David Newton
Author
Rancher

Joined: Sep 29, 2008
Posts: 12617

Do you mean MultiActionController?
Abhay Agarwal
Ranch Hand

Joined: Feb 29, 2008
Posts: 1086
    
    1

Yes
Mark Secrist
Ranch Hand

Joined: Jul 01, 2003
Posts: 89
NOTE: I changed this first part because I misread the original question

The way you've annotated your controller, it's configured like a SimpleFormController (i.e. one path with separate GET & POST handler methods). The thing that controller annotations do is blur the lines between the old ideas of form controller and multiaction controller. Basically, you can do either or both in the same controller now. Anything you could do with the old SimpleFormController, you can pretty much do with annotations.

If you watch the startup and you've got full logging turned on, you'll see that the annotation handler deduces a lot from the annotations you've got. That's the convention over configuaration showing up. On the other hand, a multi-action controller would look more like the following (using your example) and takes advantage of more explicit path definitions. Notice how it's possible to blend both SimpleFormController behavior with MultiActionController behavior.


David Newton
Author
Rancher

Joined: Sep 29, 2008
Posts: 12617

Are there any reasons to use one over the other? I also thought they looked really close to each other at a high level once you could add the annotations, but I don't know enough to understand any real differences, either.
Mark Secrist
Ranch Hand

Joined: Jul 01, 2003
Posts: 89
David Newton wrote:Are there any reasons to use one over the other? I also thought they looked really close to each other at a high level once you could add the annotations, but I don't know enough to understand any real differences, either.

Are you asking annoteded vs. extension of SimpleFormController & MulitActionController?
David Newton
Author
Rancher

Joined: Sep 29, 2008
Posts: 12617

Mmm, more or less. It just seems like with the annotations there's no real need to think about the distinction--but want to know if that's actually true, or if there's other reasons someone might choose one over the other.
Mark Secrist
Ranch Hand

Joined: Jul 01, 2003
Posts: 89
Yes, it's true that with annotations the distinction becomes blurred. In the past, you had to think about it more explicitly because the behavior was built into the class you extended and you could only extend from one. With annotations, you could make one controller class handle both form processing and other miscellaneous calls that might be considered multi-action. In fact, it's possible to have one controller handle muliple forms if you set it up right - but probably not a good idea.
 
Don't get me started about those stupid light bulbs.
 
subject: @Controller annotation query