小编any*_*oby的帖子

使用多个线程加载spring上下文

我有一个大型应用程序上下文,包含许多上下文文件,使用自动装配和包扫描,启动Web服务,建立与数据库的连接以及外部遗留系统等.我一直在考虑如何改善上下文加载时间,因为它需要一段时间没有真正占用CPU.有没有办法告诉应用程序上下文使用多个线程进行初始化?理论上应该是可能的,因为我们已经定义了依赖关系.我希望并行初始化资源(db,web services和legacy connections).

spring multithreading applicationcontext

5
推荐指数
1
解决办法
902
查看次数

使用 Spring WebClient 的 OAuth2 机器对机器

为了让 Spring WebClient 针对(可能是)OAuth2 端点验证我的服务,我已经奋斗了 2 天。流程很简单,我需要从某个端点获取令牌并将其设置为授权标头。我以为springboot可以透明地做到这一点。

\n

这是配置我的网络客户端的一段代码:

\n
    private static final String SALES_FORCE = "sf";\n\n    @Bean\n    public WebClient salesforceClient(@Value("${salesforce.url}") String salesforceUrl,\n            ReactiveClientRegistrationRepository clientRegistrationRepository, ReactiveOAuth2AuthorizedClientService clientService) {\n        var clientManager = new AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager(clientRegistrationRepository, clientService);\n        var oauth2Client = new ServerOAuth2AuthorizedClientExchangeFilterFunction(clientManager);\n        oauth2Client.setDefaultClientRegistrationId(SALES_FORCE);\n\n        return WebClient.builder()\n\n                .baseUrl(salesforceUrl)\n\n                .filter(oauth2Client)\n\n                .build();\n    }\n\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的透明身份验证配置:

\n
spring.security.oauth2.client.registration.sf.client-id=<secret_id>\nspring.security.oauth2.client.registration.sf.client-secret=<secret_key>\nspring.security.oauth2.client.registration.sf.authorization-grant-type=refresh_token\nspring.security.oauth2.client.registration.sf.user-info-authentication-method=form\nspring.security.oauth2.client.provider.sf.token-uri=https://auth.exacttargetapis.com/v1/requestToken\n\n
Run Code Online (Sandbox Code Playgroud)\n

我花了一段时间才弄清楚要使用哪些 oauth2 类,但最终应用程序启动了。我在本地主机上用 WireMock 替换了 token-uri,却发现 Spring 甚至没有尝试检索令牌。然后,我用 WireMock 替换了目标服务器,并返回 401,假设这会触发令牌检索或刷新,但 Spring 仍然没有获取令牌。

\n

我已经开始考虑手动管理此令牌检索/过期,因为 Spring 对我来说似乎太神奇了。

\n

我究竟做错了什么?

\n

附言。

\n

根据 ServerOAuth2AuthorizedClientExchangeFilterFunction 的 javadoc 建议,我还尝试了第二个构造函数,它(大概)也自动管理令牌过期。

\n
    private …
Run Code Online (Sandbox Code Playgroud)

oauth-2.0 spring-boot wiremock spring-webflux

4
推荐指数
1
解决办法
3151
查看次数