Diferencia entre <context: annotation-config> vs <context: component-scan>

Estoy aprendiendo Spring 3 y parece que no entiendo la funcionalidad detrás de<context:annotation-config> y<context:component-scan>.

De lo que he leído, parecen manejar diferentes anotaciones (@Required, @Autowired, etc. vs @Component, @Repository, @Service, etc.) pero también de lo que he leído registran las mismas clases de postprocesador de beans.

ara confundirme aún más, hay unannotation-config atributo en<context:component-scan>.

¿Alguien puede arrojar algo de luz sobre estas etiquetas? Lo que es similar, lo que es diferente, es uno reemplazado por el otro, se completan, ¿necesito uno de los dos?