Spring Integration

As Javet is a fundamental SDK, it doesn't rely on Spring Framework so that Javet users don't get dependency hell. But, Javet can be integrated with Spring easily.

Configuration

  • Create a Spring configuration.

  • Declare IJavetEnginePool as @Bean.

@Configuration
@PropertySource("classpath:javet-engine.properties")
@ConfigurationProperties(prefix = "javet.engine")
public class MyJavetEngineConfig {

    @Bean(name = "JavetEnginePoolNode")
    public IJavetEnginePool getJavetEnginePoolNode() {
        JavetEngineConfig javetEngineConfigNode = new JavetEngineConfig();
        javetEngineConfigNode.setAllowEval(...);
        javetEngineConfigNode.setAutoSendGCNotification(...);
        javetEngineConfigNode.setDefaultEngineGuardTimeoutMillis(...);
        javetEngineConfigNode.setPoolDaemonCheckIntervalMillis(...);
        javetEngineConfigNode.setPoolIdleTimeoutSeconds(...);
        javetEngineConfigNode.setPoolMinSize(...);
        javetEngineConfigNode.setPoolMaxSize(...);
        javetEngineConfigNode.setPoolShutdownTimeoutSeconds(...);
        javetEngineConfigNode.setResetEngineTimeoutSeconds(...);
        javetEngineConfigNode.setJavetLogger(new MyJavetLogger(MyJavetLogger.class.getName()));
        javetEngineConfigNode.setJSRuntimeType(JSRuntimeType.Node);
        return new JavetEnginePool<>(javetEngineConfigNode);
    }

    @Bean(name = "JavetEnginePoolV8")
    public IJavetEnginePool getJavetEnginePoolV8() {
        JavetEngineConfig javetEngineConfigV8 = new JavetEngineConfig();
        javetEngineConfigV8.setAllowEval(...);
        javetEngineConfigV8.setAutoSendGCNotification(...);
        javetEngineConfigV8.setDefaultEngineGuardTimeoutMillis(...);
        javetEngineConfigV8.setPoolDaemonCheckIntervalMillis(...);
        javetEngineConfigV8.setPoolIdleTimeoutSeconds(...);
        javetEngineConfigV8.setPoolMinSize(...);
        javetEngineConfigV8.setPoolMaxSize(...);
        javetEngineConfigV8.setPoolShutdownTimeoutSeconds(...);
        javetEngineConfigV8.setResetEngineTimeoutSeconds(...);
        javetEngineConfigV8.setJavetLogger(new MyJavetLogger(MyJavetLogger.class.getName()));
        javetEngineConfigV8.setJSRuntimeType(JSRuntimeType.V8);
        return new JavetEnginePool<>(javetEngineConfigV8);
    }

Injection

You may easily inject your engine pool in the Spring way.

@Resource
protected IJavetEnginePool javetEnginePool;