Skip to main content

Framework Integration

Patterns for using com.candescent.forge:di-java-sdk in long-running servers and serverless functions.

Spring Boot

Create one CandescentClient bean at application startup and reuse it across requests:

import com.candescent.di.CandescentClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CandescentConfig {
@Bean(destroyMethod = "close")
public CandescentClient candescentClient() {
return CandescentClient.fromEnv();
}
}

Inject the client into your controllers or services:

import com.candescent.di.CandescentClient;
import com.candescent.di.generated.model.AccountsResponse;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/accounts")
public class AccountsController {
private final CandescentClient client;

public AccountsController(CandescentClient client) {
this.client = client;
}

@GetMapping("/{userId}")
public AccountsResponse listAccounts(@PathVariable String userId) throws Exception {
return client.accounts()
.callList()
.hostUserId(userId)
.execute();
}
}

The SDK caches OAuth tokens internally, so a singleton client is safe for concurrent requests in a single JVM.

AWS Lambda

For short-lived handlers, use standalone operations from com.candescent.di.operations so you do not manage the client lifecycle in every invocation. Each helper reads CANDESCENT_* environment variables and handles client setup internally — see SDK Reference → Standalone operations.

Set CANDESCENT_CLIENT_ID, CANDESCENT_CLIENT_SECRET, CANDESCENT_INSTITUTION_ID, and CANDESCENT_ENVIRONMENT in the Lambda environment configuration (or AWS Secrets Manager).

For Lambdas that make many calls per invocation, a static CandescentClient singleton is also acceptable — reuse the client across repeated invocations when AWS keeps your function running, and call close() only if the runtime supports graceful shutdown.

Lifecycle guidelines

PatternWhen to use
Singleton CandescentClientSpring Boot, long-running workers
com.candescent.di.operations helpersLambda, one-off CLI scripts
client.close()Process shutdown, test teardown

Production credentials

warning

Do not commit .env files or ship Client ID / Client Secret in source control. Use your platform's secret store in deployed environments.

  • Local development — shell exports or IDE run configuration (see Examples)
  • Deployed environments — environment variables, AWS Secrets Manager, Azure Key Vault, or your platform's secret store
  • Developer Console — rotate Client ID / Secret if credentials are exposed

Obtain credentials via the Getting Started quickstart guide.