gpt4 book ai didi

java - 如何在Spring Boot中更改ProviderSignInController中的属性signUpUrl

转载 作者:行者123 更新时间:2023-12-02 04:43:00 24 4
gpt4 key购买 nike

简而言之

我需要更改 Spring Boot 自动配置中定义的 bean 的属性值,该属性无法从 application.properties 进行配置

描述性

我想更改 bean ProviderSignInControllersignUpUrl。根据文档,这是无法在属性文件中更改的。

http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

所以我做了这样的事情。

@Configuration
public class SomeConfig {

@Autowired
public void configureProviderSignInController(ProviderSignInController signInController){
signInController.setSignUpUrl("/register");
}

最终出现以下错误

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.social.connect.web.ProviderSignInController] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)

但是根据自动配置,这个bean应该可用

https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/social/SocialWebAutoConfiguration.java

如果我做错了,请帮助和指导我。

最佳答案

该错误描述问题是您没有在 configureProviderSignInController 的方法签名中实例化类型为 ProviderSignInController 的 bean。相反,您需要使用 Controller 所需的正确构造函数签名在您的配置之一中实例化和配置 Controller :

@Configuration
@EnableSocial
public class SocialConfig implements SocialConfigurer {

...

@Bean
public ProviderSignInController providerSignInController(
ConnectionFactoryLocator connectionFactoryLocator,
UsersConnectionRepository usersConnectionRepository) {
ProviderSignInController controller = new ProviderSignInController(
connectionFactoryLocator, usersConnectionRepository,
new SimpleSignInAdapter());
controller.setSignUpUrl("/register");
return controller;
}

}

或者,如果您使用 XML 配置:

<bean class="org.springframework.social.connect.signin.web.ProviderSignInController">
<!-- relies on by-type autowiring for the constructor-args -->
<property name="signUpUrl" value="/register" />
</bean>

欲了解更多信息,请参阅 Spring Social docs on enabling provider sign in .

关于java - 如何在Spring Boot中更改ProviderSignInController中的属性signUpUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29943071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com