The second day of sessions at SpringOne/2GX is almost over. Soon, we'll be having dinner and then listening to Adrian Colyer give a keynote address (which I'll summarize in a later post). So I thought I'd go ahead and take a moment to report on my day and the sessions I've attended.
I spent the better part of the day in the "Rich Web Application Development" track, as it had a lot of topics that I find interesting. I started by hearing Keith Donald give an overview of the entire Spring Web stack, focusing on Spring 3.0 MVC. I'm already familiar with the topic, but I wanted to make sure I wasn't missing something in Spring MVC and for lack of another talk to catch my attention I decided to go for Keith's talk. It was a very informative talk. The one thing that I walked away with was a deeper understanding of how to apply Spring 3.0-style REST to my Spring MVC applications.
With REST fresh in my mind, I decided to spend the 2nd session of the day sitting in on Arjen Poutsma's talk that focused on using REST in Spring. Although I've been familiar with Spring 3.0's new REST support for awhile, I still learned something that I didn't already know. Specifically, I wasn't aware that @RequestMapping can take URL patterns with Ant-style wildcards and regular expressions. I also got a better feel for how to divide up my RESTful resources among Spring MVC controllers.
After lunch, I attended Jeremy Grelle's talk on Spring Faces. I'm not a big JSF fanatic, but I decided to make myself go to this talk because I really should be more comfortable with the topic than I am. I'm glad that I went because I learned that Spring Faces offers a Spring-centric approach to JSF where JSF is really just a view technology for Spring MVC (as opposed to a JSF-centric approach where Spring is nothing but a managed bean provider). As a fan of Spring MVC, I like the Spring-centric JSF integration that Spring Faces offers. Couple that with Facelets (I hated the JSP-oriented JSF) and I think I could end up liking (or at least tolerating) JSF.
Next up, I listened to Ben Alex give an introduction to Roo. I've tinkered with Roo here and there before, but never have had a chance to really dig into it. I just gotta say that I think an alternate name for Spring Roo might be "Spring Wow!", because I was blown away by it. I learned some little details about Roo that I didn't realize. For instance, I've seen the .aj files in my toy Roo projects, but didn't know what purpose they served--and in fact, they made me uncomfortable thinking that my project depended on AspectJ without me understanding why. Now I know that Roo uses AspectJ at compile-time only as its magic sauce for automatically weaving in code that I don't want to write (like accessor methods). Roo has no runtime presence and thus no runtime overhead. And, I learned that if I decide to de-Roo my project, it's a very simple 3-step process. Oh, and Roo makes easy work of creating OSGi bundles with its Bundlor support.
Right now I'm listening (sorta...I'm also writing this) to Chris Beams and Mark Pollack talk about a variety of dependency injection styles. They've organized the styles into external DI and internal DI. Spring's XML-based configuration, for example, is external (that is, it doesn't invade your application code). But Spring's @Component and @Autowired-based DI is internal because it invades your Java source. A lot of this talk is old hat to me...I've presented a similar talk before. But I wanted to catch up on the latest options (JSR-330, for example) and get their take on the different DI styles.
As I have already mentioned, Adrian Colyer will be giving a keynote address after dinner tonight. I'll blog about that later tonight or tomorrow. Following that is a sponsor reception and then BOF sessions. Honestly, I'm a bit drained, so I may skip out on the BOF sessions so that I can do some last minute preparations for my SpEL talk tomorrow and get a good night's sleep.