anchor.diff:  	}
   }
   ----
  +
  +
  +[[oauth2Client-additional-features]]
  +=== Additional Features
  +
  +
  +[[oauth2Client-registered-authorized-client]]
  +==== RegisteredOAuth2AuthorizedClient
  +
  +The `@RegisteredOAuth2AuthorizedClient` annotation provides the capability of resolving a method parameter to an argument value of type `OAuth2AuthorizedClient`.
  +This is a convenient alternative compared to looking up the `OAuth2AuthorizedClient` via the `OAuth2AuthorizedClientService`.
  +
  +[source,java]
  +----
  +@Controller
  +public class OAuth2LoginController {
  +
  +	@RequestMapping("/userinfo")
  +	public String userinfo(@RegisteredOAuth2AuthorizedClient("google") OAuth2AuthorizedClient authorizedClient) {
  +		OAuth2AccessToken accessToken = authorizedClient.getAccessToken();
  +
  +		...
  +
  +		return "userinfo";
  +	}
  +}
  +----
  +
  +The `@RegisteredOAuth2AuthorizedClient` annotation is handled by `OAuth2AuthorizedClientArgumentResolver` and provides the following capabilities:
  +
  +* An `OAuth2AccessToken` will automatically be requested if the client has not yet been authorized.
  +** For `authorization_code`, this involves triggering the authorization request redirect to initiate the flow
  +** For `client_credentials`, the access token is directly obtained from the Token Endpoint using `DefaultClientCredentialsTokenResponseClient`
  
positive.code: 
  
  [[oauth2Client-authorized-repo-service]]
  === OAuth2AuthorizedClientRepository / OAuth2AuthorizedClientService
  
  `OAuth2AuthorizedClientRepository` is responsible for persisting `OAuth2AuthorizedClient`(s) between web requests.
  Whereas, the primary role of `OAuth2AuthorizedClientService` is to manage `OAuth2AuthorizedClient`(s) at the application-level.
  
negative.code: ----
  
  
  `OAuth2AuthorizationRequestResolver`
  
  The primary role of the `OAuth2AuthorizationRequestResolver` is to resolve an `OAuth2AuthorizationRequest` from the provided web request.
  The default implementation `DefaultOAuth2AuthorizationRequestResolver` matches on the (default) path `/oauth2/authorization/{registrationId}` extracting the `registrationId` and using it to build the `OAuth2AuthorizationRequest` for the associated `ClientRegistration`.
  