Spring MVC 3.1.0漏洞?升级控制器后不再自动检测

时间:2011-12-29 12:41:55

标签: java spring spring-mvc spring-annotations autowired

我正在编写使用 Spring MVC 的Web应用程序将Spring bean与类似REST的通道绑定。

我在以前的应用程序(纯XML配置)和使用<mvc:annotation-driven/>功能的示例中创建了基本配置。我在spring xml文件中指向带有<context:component-scan base-package="my.package"/>的控制器的包。

正在使用 Spring 3.0.6.RELEASE 。但是,升级到 3.1.0.RELEASE 后,我的控制器停止检测并且没有注册任何通道。 Spring上下文不包含HelloChannel接口的实现。

这是这个Spring版本中的一个错误,还是我正在使用已弃用的配置,在新版本中停止支持?我没有得到任何错误或警告,只是没有自动检测到bean。

控制器接口定义如下:

@RequestMapping("/config") public interface ConfigChannel

实施:

@Controller
public class ConfigChannelImpl implements ConfigChannel

1 个答案:

答案 0 :(得分:2)

Spring文档指出基于接口的@Controller用于代理事务方法。因此,您可能正在使用<tx:annotation-driven />标记。您现在看来的问题是Spring 3.1引入了对CGLIB的支持,CGLIB是一个基于运行时的字节码操纵器。您需要将proxy-target-class="true"添加到事务配置中,并将CGLIB添加到类路径中。

<tx:annotation-driven proxy-target-class="true" />

来自http://static.springsource.org/spring/docs/3.1.0.M1/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping