Dúvida sobre Injeção de dependência EJB

Pessoal, boa tarde.

Estou analisando um projeto existente onde trabalho e estou com dúvidas sobre injeção de dependências… Está um bocado confuso.

Existe o seguinte cenário:

public interface DAOFactory {}
public class DAOFactoryImpl implements DAOFactory {

Na classe DAOFactoryImpl é implementado os métodos da superclasse. Nessa classe, são criadas instâncias das classes DAO específicas para cada entidade no banco e as mesmas são armazenadas em um map. Segue um exemplo abaixo:

	public EmpresaDAO getEmpresaDAO() {
		String chave = EmpresaDAO.class.getName();
		if (!mapa.containsKey(chave)) {
			mapa.put(chave, new EmpresaDAOImpl(entityManager));
		}
		return (EmpresaDAO) mapa.get(chave);
	}

Dito isso, há uma classe controladora, “EmpresaControlador”, que é responsável por realizar as chamadas ao banco de dados para salvar, recuperar, etc. Essa classe extende a “GenericoControlador”. A minha dúvida é sobre essa última classe… Nela há o seguinte trecho:

@EJB protected DAOFactory daoFactory;

A classe “EmpresaControlador” herda o membro daoFactory acima obviamente. Porém, o que realmente aconteceu com a utilização do @EJB?? Como é possível que a classe “EmpresaControlador” consiga chamar o método específico correto para salvar no banco? E também achei super estranho realizar injeção em uma referência a uma interface! Espero ter conseguido expressar minha dúvida corretamente… pois está tão confuso que nem consigo explicar direito…

Quem puder dar um help ficaria agradecido!