SpringBootTest с TogglzJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 SpringBootTest с Togglz

Сообщение Anonymous »

Я совсем недавно добавил togglz в приложение Spring-Boot 3.1.9, которое также содержит много вещей, таких как Spring-Security, Spring-Data и т. д.
Зависимость Maven: р>

org.togglz
togglz-spring-boot-starter
4.4.0


Перечисление функций:
import org.togglz.core.Feature;

public enum ApplicationFeatures implements Feature {
MY_FEATURE
}

Конфигурация:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.togglz.core.manager.EnumBasedFeatureProvider;
import org.togglz.core.spi.FeatureProvider;
import org.togglz.core.user.NoOpUserProvider;
import org.togglz.core.user.UserProvider;

@Configuration
public class TogglesConfiguration {

@Bean
public FeatureProvider featureProvider() {
return new EnumBasedFeatureProvider(ApplicationFeatures.class);
}

@Bean
public UserProvider userProvider() {
return new NoOpUserProvider();
}
}

Application.yaml:
togglz:
features:
MY_FEATURE:
enabled: true

Простой сервис, использующий:
import de.telekom.wom.workorder.config.toggles.ApplicationFeatures;
import org.springframework.stereotype.Service;

@Service
public class MyService {

public String getA() {
if (ApplicationFeatures.MY_FEATURE.isActive())
return "OK";
else
return "INACTIVE";
}
}

Простой тест весенней загрузки:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest//(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class Testik {

@Autowired
MyService myService;

@Test
void name() {
myService.getA();
}
}

Проблема в том, что если я не запускаю реальную веб-среду и использую простой @SpringBootTest без (webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT), я получаю сообщение об ошибке:

java.lang.IllegalStateException: не удалось найти FeatureManager.
Для веб-приложений убедитесь, что запускается TogglzFilterправильно. В других сценариях развертывания вам обычно придется
реализовать FeatureManagerProvider, как описано в главе «Расширенная
конфигурация» документации.

Хотя если я создам образец проекта, он будет работать как положено. В чем может быть проблема? Почему развитие веб-среды может повлиять на Togglz?
Журналы успеха:

DEBUG [ FeatureContext.findFeatureManagerInClassLoader()] Поставщик
org.togglz.core.context.BeanFinderFeatureManagerProvider Возвращенный
FeatureManager

Журналы по ошибке:< /p>

ОТЛАДКА [FeatureContext.findFeatureManagerInClassLoader()]
Нет FeatureManager, предоставленного
org.togglz.core.context.BeanFinderFeatureManagerProvider

ОБНОВЛЕНИЕ:
Я только что понял, что если я удалю зависимость привода из файла pom.xml, то все будет работать так, как есть. должен. Есть идеи, почему?

org.springframework.boot
spring-boot-starter-actuator



Подробнее здесь: https://stackoverflow.com/questions/787 ... ith-togglz
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»