Java 在Spring Social中重写默认重定向视图

Java 在Spring Social中重写默认重定向视图,java,spring,spring-mvc,twitter,spring-social,Java,Spring,Spring Mvc,Twitter,Spring Social,我试图覆盖SpringSocial的默认行为,以便在连接到提供商(Twitter、Facebook等)后重定向到“connect/{providerId}Connected” 因此,我试图通过覆盖受保护的java.lang.String connectedView(java.lang.String providerId)方法来覆盖默认行为 因此,我对ConnectController进行了子类化,并尝试覆盖: @Controller public class CustomConnectContr

我试图覆盖SpringSocial的默认行为,以便在连接到提供商(Twitter、Facebook等)后重定向到“connect/{providerId}Connected”

因此,我试图通过覆盖受保护的java.lang.String connectedView(java.lang.String providerId)方法来覆盖默认行为

因此,我对ConnectController进行了子类化,并尝试覆盖:

@Controller
public class CustomConnectController extends ConnectController{

    @Inject
    public CustomConnectController(
            ConnectionFactoryLocator connectionFactoryLocator,
            ConnectionRepository connectionRepository) {
        super(connectionFactoryLocator, connectionRepository);
    }


    @Override
    protected String connectedView(String providerId){
        //Do some logic

        return "redirect:/foo/bar;
    }

}
请参阅控制器类的文档:

但我得到了以下错误:

原因:java.lang.IllegalStateException:找到不明确的映射。 无法映射 'org.springframework.social.connect.web.ConnectController#0'bean 方法public org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.connect(java.lang.String,org.springframework.web.context.request.NativeWebRequest) 到 {[/connect/{providerId}],方法=[POST],参数=[],头=[],使用=[],产生=[],自定义=[]: 已存在“customConnectController”bean公共方法 org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.connect(java.lang.String,org.springframework.web.context.request.NativeWebRequest) 映射

谁能给我引路。 我的要求如下: 1.用户连接社交帐户(Twitter、Facebook等)后 2.做一些商业逻辑 3.重定向到/foo/bar页面


请帮忙。

好的,我自己找到了解决办法。 为每个人发布答案,以便与愚蠢的事情斗争的任何人都可能受益:

实际上,我在配置中配置了ConnectController&现在自定义控制器正在执行该操作&因此它表示已映射。从配置中删除配置可以解决此问题

在我的情况下,删除以下代码:

<bean class="org.springframework.social.connect.web.ConnectController">
        relies on by-type autowiring for the constructor-args
        <property name="applicationUrl" value="${application.url}" />
    </bean> 

依赖于构造函数参数的按类型自动关联

好吧,你做的每件事都是对的,但是忘了添加

    @RequestMapping("/connect")
如果您使用的是Spring boot,并且没有和Spring-config.xml文件,您可以使用下面的代码

这段代码帮了我的忙

@Controller
@RequestMapping("/connect")
public class ChangeDefaultFlowController extends ConnectController {

    public ChangeDefaultFlowController(ConnectionFactoryLocator connectionFactoryLocator,
            ConnectionRepository connectionRepository) {
        super(connectionFactoryLocator, connectionRepository);
    }

    @Override
    protected String connectedView(String providerId) {
        return "redirect:/"+providerId;
    }

}

感谢您自己的回答,我曾试图找出如何使用JavaConfig+spring boot实现此功能,但无法使其正常工作