如何实例化 java.security.Principal?所有的子类都被弃用

How do I instantiate java.security.Principal? All the subclasses are deprecated

我有一个接受 Principal 的 Spring API 服务。

public ResponseEntity<ApiCustomResponse> create(Principal principal, UrlInfoData urlinfo) throws ApiException;

主体由 Spring 为 OAuth2 API 调用自动创建。我想为网页管理界面使用相同的服务。

@Autowired
private IShortUrlService apiService;
...
    Principal principal = new Principal();
    apiService.create(principal, urlinfo);

我想用当前登录的管理员用户名实例化主体。但是,所有实例化 类 都已弃用。如何实例化 Principal 以传递给服务?

https://docs.oracle.com/javase/8/docs/api/java/security/Principal.html

既然java.security.Principal是一个接口,为什么不实现呢?

Principal principal = new Principal() {

        @Override
        public String getName() {
            return adminName;
        }

    }
apiService.create(principal, urlinfo);

此外,您可以通过以下方式获取当前登录用户的主体:SecurityContextHolder.getContext().getAuthentication().getPrincipal()