Эта ошибка говорит о том, что при попытке внедрить экземпляр AppSingleton
инжектор не знает как. Термин «инжектор» для слова «как ввести что-то» является «обязательным». Думайте об этом как правило инъекции.
В вашем случае вы можете использовать эту ошибку, потому что аннотации @Singleton
недостаточно для создания привязки: она просто указывает область потенциальной привязки.
SeedStack выполняет множество привязок для вас, сканируя путь к классам и находя интересующие вас классы (например, @Path
-аннотированные классы - это ресурсы JAX-RS, автоматически связанные модулем REST). В вашем случае вы хотите создать произвольную привязку, поэтому вы должны использовать аннотацию @Bind
:
import javax.inject.Singleton;
import org.seedstack.seed.Bind;
@Singleton
@Bind
public class AppSingleton {
private String aSingleStr = "Xxxxxxx Yyyy @ Zzzz" ;
public String getASingleStr() {
this.aSingleStr = this.aSingleStr + "x" ;
return this.aSingleStr;
}
}
Обратите внимание, что я сохранил аннотацию @Singleton
, поскольку вы сначала хотели синглтон. Если вы его опустите, у вас будет только привязка без области действия, а это означает, что каждый раз, когда экземпляр должен быть внедрен, будет создаваться новый (хорошо для безгражданства).