2017-09-15 11 views
0

전보 봇을 자바 라이브러리 TelegramBots을 사용하고 내 애플리케이션에서 SpringBoot를 사용합니다. 클래스 TelegramBotPolling의 방법 이라고 스프링 부트를 사용하는 전보 프로그램에서 Autowire가 작동하지 않음

가 null 분야 busStationBtnsGenerator보다을 onUpdateReceived. 순서 이 onUpdateReceived 때 null가 아닌 것에 busStationBtnsGenerator 자동으로 묶어 필드 방법이라고 어떻게 corectly

? Spring에 의해 관리되지 않는 생성자 새로운로 만든 클래스의

@Component 
public class TelegramBotPolling extends TelegramLongPollingBot { 

    @Autowired 
    BusStationBtnsGenerator busStationBtnsGenerator; 

    static { 
     ApiContextInitializer.init(); 
    } 

    @PostConstruct 
    public void registerBot(){ 

     TelegramBotsApi telegramBotsApi = new TelegramBotsApi(); 
     try { 
      telegramBotsApi.registerBot(new TelegramBotPolling()); 
     } catch (TelegramApiException e) { 
      logger.error(e); 
    } 
    } 


    @Override 
    public void onUpdateReceived(Update update) { 
     // When this method is called field "busStationBtnsGenerator" is null. 
    } 
} 



@Component 
public class BusStationBtnsGeneratorImpl implements BusStationBtnsGenerator { 

    @Autowired 
    BusStationsParser stationsParser; 

    @Autowired 
    UrlHelper urlHelper; 


    @Override 
    public InlineKeyboardMarkup getKeyboardMarkupForBusStations() 
    throws Exception 
    { 
     ...... 
    } 

    private List<List<InlineKeyboardButton>> getBusStationButtons() 
    throws Exception 
    { 
     ..... 
    } 

} 
+1

PLS BusStationBtnsGenerator 클래스 – Kick

+2

붙여 넣기는 스프링 빈 클래스를 TelegramBotPolling입니까? – pvpkiran

+0

@Kick, 내 질문에 ** BusStationBtnsGenerator ** 클래스를 추가했습니다. – foxis

답변

2

인스턴스 :

이 내 코드의 간단한 예입니다. 참고로이 경우 키워드를 사용해야합니다.

@PostConstruct 
public void registerBot(){ 
    TelegramBotsApi telegramBotsApi = new TelegramBotsApi(); 
    try { 
     telegramBotsApi.registerBot(this); 
    } catch (TelegramApiException e) { 
     logger.error(e); 
}