Java Spring MVC 3.1.0缺陷?升级后,不再自动检测控制器

Java Spring MVC 3.1.0缺陷?升级后,不再自动检测控制器,java,spring,spring-mvc,spring-annotations,autowired,Java,Spring,Spring Mvc,Spring Annotations,Autowired,我正在编写一个web应用程序,它使用SpringMVC将Springbean与REST类通道绑定在一起 我已经在我以前的应用程序(纯XML配置)和使用功能的示例上创建了基本配置。我指的是SpringXML文件中带有控制器的包 它在Spring 3.0.6中工作。释放。但是,升级到3.1.0.RELEASE后,停止检测我的控制器,并且没有注册通道。Spring上下文不包含HelloChannel接口的实现 这是这个Spring版本中的一个bug,还是我正在使用不推荐的配置,新版本不再支持它?我没有

我正在编写一个web应用程序,它使用SpringMVC将Springbean与REST类通道绑定在一起

我已经在我以前的应用程序(纯XML配置)和使用
功能的示例上创建了基本配置。我指的是SpringXML文件中带有
控制器的包

它在Spring 3.0.6中工作。释放。但是,升级到3.1.0.RELEASE后,停止检测我的控制器,并且没有注册通道。Spring上下文不包含
HelloChannel
接口的实现

这是这个Spring版本中的一个bug,还是我正在使用不推荐的配置,新版本不再支持它?我没有收到错误或警告,只是没有自动检测到bean

控制器接口定义如下所示:

@RequestMapping("/config") public interface ConfigChannel
以及实施:

@Controller
public class ConfigChannelImpl implements ConfigChannel

Spring文档指出,基于接口的
@Controller
用于代理事务方法。因此,您可能正在使用
标记。现在的问题是Spring3.1引入了对CGLIB的支持,CGLIB是一种基于运行时的字节码操纵器。您需要将代理目标class=“true”添加到事务配置中,并将CGLIB添加到类路径中

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


中,您可以显示密码吗Controller@JigarJoshi添加了接口声明和implI,建议首先将日志记录级别设置为DEBUG,看看这是否为您提供了一些关于发生了什么的线索。您知道问题是否在于没有创建bean,或者mvc:annotation-driven是否无法获取您的请求映射?我不需要类级别的代理,我过去在代理方面遇到过问题,所以我现在总是使用接口进行代理。我只需要检测这个接口实现并将其连接到SpringMVC引擎。CGLIB是Spring3.1在运行时管理这种关系的方式。是的,您的解决方案对我很有效。我不得不添加springtxschema和tx:annotation驱动程序,尽管我没有在这个上下文中使用它。在简单地添加cglib之后,bean被检测到并放入spring上下文中,但没有添加到MVCServlet中。现在它工作了,我希望在代理目标类级别上不会有任何问题。