Skip to content

guoshiqiufeng/dify-spring-boot-starter

dify-spring-boot-starter

cover-v5-optimized

Documentation · Examples · DeepWiki

Maven central License CodeQL codecov

Read in other languages: 简体中文

🎉 Version 2.0 Major Update: Modular architecture refactoring with pure Java support! See Changelog

Introduction

Provides Spring Boot Starter and pure Java support for Dify to simplify development.

Version 2.0 New Features:

  • ✨ Support for pure Java projects (no Spring required)
  • 🔧 Modular architecture with flexible HTTP clients
  • 📦 Multiple JSON codec options (Gson, Jackson 2.x/3.x)
  • 🚀 Unified client implementation, eliminating code duplication
  • 🔒 Log masking and SSE safety hardening (v2.1.0+)

Supported Frameworks

  • Spring Boot 4/3/2
  • Pure Java Projects (2.0+)

Minimum Requirements

  • Java 8
  • Spring Boot 2 (for Spring projects)

Recommended Versions

  • Java 17+
  • Spring Boot 4/3

Features

  • chat
  • server
  • workflow
  • dataset (Knowledge)
  • status (Monitoring)
  • logging security (Masking & SSE Protection)

Use

Introduce BOM for Version Management

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.github.guoshiqiufeng.dify</groupId>
            <artifactId>dify-bom</artifactId>
            <version>2.2.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Add Starter Dependencies

Spring Boot 3.1+

<dependency>
    <groupId>io.github.guoshiqiufeng.dify</groupId>
    <artifactId>dify-spring-boot-starter</artifactId>
</dependency>

Spring Boot 4.x

Available in dify-spring-boot-starter v1.6.0+

<dependency>
    <groupId>io.github.guoshiqiufeng.dify</groupId>
    <artifactId>dify-spring-boot4-starter</artifactId>
</dependency>

Spring Boot 2.x / 3.0.x

Available in dify-spring-boot-starter v0.9.0+

<dependency>
    <groupId>io.github.guoshiqiufeng.dify</groupId>
    <artifactId>dify-spring-boot2-starter</artifactId>
</dependency>

Pure Java Projects

Available in dify-spring-boot-starter v2.0.0+

<dependency>
    <groupId>io.github.guoshiqiufeng.dify</groupId>
    <artifactId>dify-java-starter</artifactId>
</dependency>

Spring Boot Auto-Configuration

YAML Configuration
dify:
  url: http://192.168.1.10 # Dify service address
  server:
    email: admin@admin.com # Dify service email (required for Server API)
    password: admin123456 # Dify service password (required for Server API)
    password-encryption: false # Password encryption switch, default true
                                # Enable for Dify 1.11.2+ (or use Base64 cipher)
                                # Set to false for versions below 1.11.2
  dataset:
    api-key: dataset-aaabbbcccdddeeefffggghhh # Dataset API key (required for Dataset API)
Usage Example
@Service
public class DifyChatService {

    @Resource
    private DifyChat difyChat;

    public List<String> messagesSuggested(String messageId, String apiKey, String userId) {
        return difyChat.messagesSuggested(messageId, apiKey, userId);
    }
}

Manual Client Building (Builder Pattern)

Available in dify-spring-boot-starter v2.0.0+

Pure Java Projects:

import io.github.guoshiqiufeng.dify.client.integration.okhttp.http.JavaHttpClientFactory;
import io.github.guoshiqiufeng.dify.client.codec.jackson.JacksonJsonMapper;
import io.github.guoshiqiufeng.dify.support.impl.builder.DifyServerBuilder;
import io.github.guoshiqiufeng.dify.core.config.DifyProperties;

// Create HTTP client factory (OkHttp)
JavaHttpClientFactory httpClientFactory = new JavaHttpClientFactory(new JacksonJsonMapper());

// Create client configuration
DifyProperties.ClientConfig clientConfig = new DifyProperties.ClientConfig();
// Set other configurations...

// Create DifyServerClient
DifyServerClient difyServerClient = DifyServerBuilder.builder()
        .baseUrl("https://your-dify-api.example.com")
        .httpClientFactory(httpClientFactory)
        .clientConfig(clientConfig)
        .serverProperties(new DifyProperties.Server("admin@example.com", "password"))
        .build();

// Create DifyServer
DifyServer difyServer = DifyServerBuilder.create(difyServerClient);

Spring Projects:

import io.github.guoshiqiufeng.dify.client.integration.spring.http.SpringHttpClientFactory;
import io.github.guoshiqiufeng.dify.client.codec.jackson.JacksonJsonMapper;
import io.github.guoshiqiufeng.dify.support.impl.builder.DifyServerBuilder;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.client.RestClient;

// Create HTTP client factory (Spring)
SpringHttpClientFactory httpClientFactory = new SpringHttpClientFactory(
        WebClient.builder(),
        RestClient.builder(),  // Spring 6.1+ / Spring Boot 3.2+
        new JacksonJsonMapper()
);

// Create client configuration
DifyProperties.ClientConfig clientConfig = new DifyProperties.ClientConfig();
// Set other configurations...

// Create DifyServerClient
DifyServerClient difyServerClient = DifyServerBuilder.builder()
        .baseUrl("https://your-dify-api.example.com")
        .httpClientFactory(httpClientFactory)
        .clientConfig(clientConfig)
        .serverProperties(new DifyProperties.Server("admin@example.com", "password"))
        .build();

// Create DifyServer
DifyServer difyServer = DifyServerBuilder.create(difyServerClient);

Note: In Spring Boot 2.x environments, RestClient is not available, pass null.

For more usage references check the

Star History

Star History Chart

Alt

Packages

 
 
 

Contributors

Languages