There is absolutely no reason why you cannot use Spring 3.0 with SWF 2.0.8! And Tiles, for that matter. Most of the above posts that state otherwise are misleading or completely incorrect. Frankly, I am surprised to see such statements here.
There are a few restrictions, or should I say, requirements that you need to keep in mind to successfully combine SWF 2.0.8 and Spring 3.0. Most notably, you would have to use a separate, explicitly defined conversion service for WebFlow that should be named other than the default "conversionService". You can't use some of the latest Spring 3.0 features within the flows, such as annotated formatting, etc. You can use the new Spring annotations all you want inside the rest of your Spring MVC controllers and other objects. If you annotate your model objects with, say validation or formatting annotations, it's fine except that functionality won't be utilized by SWF, but you can still take advantage of that in your MVC controllers.
I have just built a commercial web application with fairly complex requirements that utilizes SWF 2.0.8, Spring 3.0.0, Spring Security 2.0.5, Tiles 2.1.3, Servlet 2.5, JSTL 1.2. (Not using Ajax, so can't say.) The application makes good use of annotated MVC controllers including most latest 3.0 features. Everything fits nicely.
And, yes, it is absolutely ok to use "mvc:annotation-driven" as long as you explicitly define the "old" SWF beans, such as the conversion service - for your SWF use only.
Here's an example of POM dependencies for the web-related stuff (the ${version}s values are the ones mentioned above):
Code:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.web</artifactId>
<version>${spring.version}</version>
</dependency>
<!--
Spring MVC for Servlet Environments (depends on spring-core, spring-beans, spring-context, spring-web)
-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.web.servlet</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.web.servlet</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring WebFow -->
<dependency>
<groupId>org.ognl</groupId>
<artifactId>com.springsource.org.ognl</artifactId>
<version>2.6.9</version>
</dependency>
<dependency>
<groupId>org.springframework.webflow</groupId>
<artifactId>org.springframework.js</artifactId>
<version>${spring.webflow.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.webflow</groupId>
<artifactId>org.springframework.webflow</artifactId>
<version>${spring.webflow.version}</version>
</dependency>
<!-- Tiles support -->
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>com.springsource.org.apache.tiles</artifactId>
<version>${tiles.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>com.springsource.org.apache.tiles.core</artifactId>
<version>2.1.2.osgi</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>com.springsource.org.apache.tiles.jsp</artifactId>
<version>${tiles.version}</version>
</dependency>
<!-- Clean URLs with JSPs -->
<dependency>
<groupId>org.tuckey</groupId>
<artifactId>com.springsource.org.tuckey.web.filters.urlrewrite</artifactId>
<version>${urlrewrite.version}</version>
</dependency>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet.version}</version>
</dependency>
<!-- JSP API (NOTE: version 2.1 requires Servlet 2.5) -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
<version>${jsp.version}</version>
</dependency>
<!-- JSTL implementation and taglibs (NOTE: version 1.2 requires Servlet 2.5 and JSP 2.1) -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>