feat: Add Spring Boot auto-configuration for lm-lib modules

- Introduced auto-configuration classes for profile, client, agent, and prompt modules.
- Updated README to reflect new modular architecture and configuration properties.
- Added selective enabling/disabling of modules via application properties.
- Refactored existing services and strategies to remove unnecessary Spring annotations.
- Enhanced test configurations to utilize auto-configuration.
- Updated META-INF imports to include new auto-configuration classes.
This commit is contained in:
extio-de
2026-01-05 21:58:12 +01:00
parent b17a1fe517
commit d5898e35f5
35 changed files with 428 additions and 90 deletions

View File

@@ -17,9 +17,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.PropertySource;
import de.extio.lmlib.agent.responsehandler.JsonAgentResponseHandler;
@@ -34,7 +34,7 @@ import de.extio.lmlib.profile.ModelCategory;
@Disabled("This test requires a running Llama server or a cloud subscription")
@SpringBootTest(webEnvironment = WebEnvironment.NONE)
@SpringBootConfiguration
@ComponentScan(basePackages = "de.extio.lmlib")
@EnableAutoConfiguration
@PropertySource("classpath:/application-test.properties")
public class AgentTest {

View File

@@ -12,9 +12,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
import de.extio.lmlib.client.ClientService;
@@ -26,7 +27,8 @@ import de.extio.lmlib.profile.ModelCategory;
@Disabled("This test requires a running Llama server or a cloud subscription (setup key in model profile)")
@SpringBootTest(webEnvironment = WebEnvironment.NONE)
@SpringBootConfiguration
@ComponentScan(basePackages = "de.extio.lmlib")
@EnableAutoConfiguration
@Import({ TestCachedClientRepository.Config.class })
@PropertySource("classpath:/application-test.properties")
public class CachedClientTest {

View File

@@ -3,6 +3,8 @@ package de.extio.lmlib.client.cached;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
@Component
@@ -10,6 +12,16 @@ class TestCachedClientRepository implements CachedClientRepository {
private final ConcurrentMap<String, CachedCompletion> cache = new ConcurrentHashMap<>();
@Configuration
static class Config {
@Bean
CachedClientRepository cachedClientRepository() {
return new TestCachedClientRepository();
}
}
@Override
public CachedCompletion get(final String key) {
return this.cache.get(key);

View File

@@ -15,9 +15,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.PropertySource;
import de.extio.lmlib.client.ClientService;
@@ -32,7 +32,7 @@ import de.extio.lmlib.profile.ModelProfileService;
@Disabled("This test requires a running Llama server")
@SpringBootTest(webEnvironment = WebEnvironment.NONE)
@SpringBootConfiguration
@ComponentScan(basePackages = "de.extio.lmlib")
@EnableAutoConfiguration
@PropertySource("classpath:/application-test.properties")
public class CompletionClientTest {

View File

@@ -25,9 +25,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.PropertySource;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
@@ -44,7 +44,7 @@ import de.extio.lmlib.profile.ModelCategory;
@Disabled("This test requires a running Llama server or a cloud subscription (setup key in model profile)")
@SpringBootTest(webEnvironment = WebEnvironment.NONE)
@SpringBootConfiguration
@ComponentScan(basePackages = "de.extio.lmlib")
@EnableAutoConfiguration
@PropertySource("classpath:/application-test.properties")
@TestInstance(Lifecycle.PER_CLASS)
public class GraderTest {

View File

@@ -7,9 +7,9 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.client.RestClient;
@@ -18,7 +18,7 @@ import de.extio.lmlib.profile.ModelProfileService;
@SpringBootTest(webEnvironment = WebEnvironment.NONE)
@SpringBootConfiguration
@ComponentScan(basePackages = "de.extio.lmlib")
@EnableAutoConfiguration
@PropertySource("classpath:/application-test.properties")
public class TokenizerTest {