我刚刚下载了项目:
https://github.com/habuma/facebook-security5
我启动了该项目,它可以正常运行。此基本项目的主要功能是使用Facebook验证用户身份并获取其供稿。
在此项目中有文件:
https://github.com/habuma/facebook-security5/blob/master/src/main/java/sample/SocialConfig.java
以下内容:
package sample;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
import org.springframework.web.context.annotation.RequestScope;
import sample.api.facebook.Facebook;
@Configuration
public class SocialConfig {
@Bean
@RequestScope
public Facebook facebook(OAuth2AuthorizedClientService clientService) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String accessToken = null;
if (authentication.getClass().isAssignableFrom(OAuth2AuthenticationToken.class)) {
OAuth2AuthenticationToken oauthToken = (OAuth2AuthenticationToken) authentication;
String clientRegistrationId = oauthToken.getAuthorizedClientRegistrationId();
if (clientRegistrationId.equals("facebook")) {
OAuth2AuthorizedClient client = clientService.loadAuthorizedClient(clientRegistrationId, oauthToken.getName());
accessToken = client.getAccessToken().getTokenValue();
}
}
return new Facebook(accessToken);
}
}
我注意到没有对此类的引用:SocialConfig
。
我的问题是:为什么当我删除此未引用的类时,尝试运行应用程序时出现以下错误?
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in sample.HomeController required a bean of type 'sample.api.facebook.Facebook' that could not be found.
Action:
Consider defining a bean of type 'sample.api.facebook.Facebook' in your configuration.
注释包含什么含义:{ @Configuration, @Bean, @RequestScope }
谢谢!
答案 0 :(得分:1)
我认为您需要在Spring中阅读基于注释的配置:
因此,当删除该Java类时,将删除该应用程序使用的Spring bean的定义,因此它无法以“ Missing bean”错误开头。
@RequestScope批注描述了有关该bean生命周期的一些信息-我认为这意味着Spring将为其处理的每个HTTP请求自动为该bean创建一个新实例。