Documentation · Examples · DeepWiki
Read in other languages: 简体中文
🎉 Version 2.0 Major Update: Modular architecture refactoring with pure Java support! See Changelog
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+)
- Spring Boot 4/3/2
- Pure Java Projects (2.0+)
- Java 8
- Spring Boot 2 (for Spring projects)
- Java 17+
- Spring Boot 4/3
- chat
- server
- workflow
- dataset (Knowledge)
- status (Monitoring)
- logging security (Masking & SSE Protection)
<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>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>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)@Service
public class DifyChatService {
@Resource
private DifyChat difyChat;
public List<String> messagesSuggested(String messageId, String apiKey, String userId) {
return difyChat.messagesSuggested(messageId, apiKey, userId);
}
}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