这个Java代码片段出了什么问题?
ClientRegistration registration = new ClientRegistration.Builder(properties.getClientId())
.authorizationUri(properties.getAuthorizationUri())
.build();
我收到以下错误消息,但不明白它:
error: Builder(String) has private access in Builder
ClientRegistration registration = new ClientRegistration.Builder(properties.getClientId())
^
据我所知,这个错误通常来自这样的代码:
ClientRegistration registration = new ClientRegistration().Builder(properties.getClientId())
以上代码是解决问题的正确方法。但现在我反而遇到了问题。
任何的想法?
无法使用ClientRegistration.Builder
关键字创建new
,因为它的构造函数是私有的。
你应该是:
ClientRegistration.Builder builder = ClientRegistration.withRegistrationId(registrationIdAsString)
这为你创造了一个新的ClientRegistration.Builder
。
之后你可以在ClientRegistration.Builder
中设置你的字段并调用.build()
来获得你的ClientRegistration
。像那样:
ClientRegistration registration = builder.authorizationUri(properties.getAuthorizationUri())
.build();
查看构建器的JavaDocs以查看可以设置的属性:https://docs.spring.io/spring-security/site/docs/5.0.x/api/org/springframework/security/oauth2/client/registration/ClientRegistration.Builder.html
或者在一行中,就像你做的那样:
ClientRegistration registration = ClientRegistration.withRegistrationId(properties.getClientId())
.authorizationUri(properties.getAuthorizationUri())
.build();