Во-первых:
@Autowired
private static GreetingServiceImpl greetingService;
у тебя greetingService является статическим. Внедрение зависимостей при помощи @Autowired работает не со свойствами/методами классов, а со свойствами/методами объектов.
Во-вторых класс Starter не является управляемым, соответственно, внедрение зависимости в объект этого класса невозможно. Да и объект этого класса ты не создаёшь.
Что бы твой пример заработал, в методе main класса Starter после создания контекста получи нужный компонент из контекста и вызови метод. Получится что-то вроде:
public static void main(String[] args) {
logger.info("Starting configuration...");
ApplicationContext context = new AnnotationConfigApplicationContext(LessonsConfiguration.class);
logger.info(
context.getBean(GreetingServiceImpl.class).sayGreeting()
);
}
И ещё у тебя на классе GreetingServiceImpl есть аннотация @Component, но при этом ты ещё и в конфигурации создаёшь компонент этого же класса. По-хорошему либо убери @Component, либо удали метод
@Bean
public GreetingServiceImpl greetingService(){
return new GreetingServiceImpl();
}
Про внедрение зависимостей в Spring Framework я вкратце писал
тут.