Autowire Enum в Spring Bean - PullRequest
       29

Autowire Enum в Spring Bean

0 голосов
/ 17 июня 2020

Я пытаюсь автоматически связать перечисление внутри Spring Bean. Я не пробовал это раньше и не уверен, чего не хватает, но когда я это делаю, я получаю параметр 0 конструктора в требуемом bean-компоненте типа java .lang. ошибка строки. Ниже приведен созданный мной код.

public interface TokenGenerator{
 String generateToken();
}

@Service
public enum  TokenGeneratorImpl implements TokenGenerator{

INSTANCE;

private string token;

public string  generateToken(){
    if(token == null){
      token="new token";
    }

    return token;
   }
}


@Service
public class ConnectionService {

 @Autowired
 private TokenGenerator generator

 public void getConnection(){
   for(int i =0; i< 1000; i++){
         Thread t = new Thread(() -> generator.generateToken());
          t.start();
      }
   }
 }

Есть две проблемы: 1) Автоматическое подключение не работает, и я получаю

parameter 0 of constructor in required a bean of type java.lang.string error

2) Если я вызываю непосредственно Enum и сгенерировать токен, тогда я обнаружил, что этот код не является потокобезопасным, и хочу понять, как я могу сделать его потокобезопасным

1 Ответ

1 голос
/ 17 июня 2020

Путем автоматического подключения TokenGeneratorImpl вы пытаетесь создать экземпляр ENUM, что невозможно

{ ссылка }

Для второй точки { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...