Guice: diferenças entre Singleton.class e @Singleton

Em Guice, qual a diferença entre:

// Inside your AbstractModule subclass:
@Override
public void configure() {
    bind(Service.class).to(ServiceImpl.class).in(Singleton.class);
}

E:

@Override
public void configure() {
    bind(Service.class).to(ServiceImpl.class);
}

@Provides @Singleton
public ServiceImpl providesService() {
    return new ServiceImpl();
}

Ambos são iguais? Quando você usaria um contra o outro? Desde já, obrigado.

questionAnswers(1)

yourAnswerToTheQuestion