Spring @autowired не работает

У меня проблема с Spring DI через аннотации, вот мое приложение:

@Service
public class Test {

    @Autowired
    private GpsPointEntityDao gpsPointEntityDao;

    public void test() {

        if (gpsPointEntityDao == null)
            System.out.println("It's null!\n" + gpsPointEntityDao);

    }
}

общий интерфейс:

public interface GenericDao<T extends DomainObject> {

    public T find(long id);

    public List<T> getAll();

    public void save(T object) throws DataAccessException;

    public void delete(T object) throws DataAccessException;

}

конкретный интерфейс:

public interface GpsPointEntityDao extends GenericDao<GpsPointEntity> {}

абстрактная реализация:

abstract class AbstractGenericDaoJpa<T extends DomainObject> implements GenericDao<T> {

    private final Class<T> entityType;

    protected EntityManager entityManager;

    public AbstractGenericDaoJpa() {
        this.entityType = (Class<T>) GenericTypeResolver.resolveTypeArgument(getClass(), GenericDao.class);
    }

    @PersistenceContext
    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }

    @Transactional
    @Override
    public T find(long id) {
        return entityManager.find(entityType, id);
    }

    @Transactional
    @Override
    public List<T> getAll() {
        return entityManager.createQuery("SELECT e FROM " + entityType.getName() + " e").getResultList();
    }

    @Transactional
    @Override
    public void save(T object) throws DataAccessException {
        entityManager.persist(object);
    }

    @Transactional
    @Override
    public void delete(T object) throws DataAccessException {
        entityManager.remove(object);
    }

}

конкретный класс:

@Repository
public class GpsPointEntityDaoJpa extends AbstractGenericDaoJpa<GpsPointEntity> implements GpsPointEntityDao {}

И мой appcontext:

<context:component-scan base-package="com.test"/>

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

<bean id="entityManagerFactory"
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
      p:dataSource-ref="basicDataSource"/>

<bean id="transactionManager"
      class="org.springframework.orm.jpa.JpaTransactionManager"
      p:entityManagerFactory-ref="entityManagerFactory"/>

<tx:annotation-driven mode="proxy" transaction-manager="transactionManager"/>

<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

Результат app:

Нулевой!

Я потратил весь день на поиск проблемы, но безуспешно. Где кто-то видит проблему?

Я нашел это сообщение в логах:

INFO  org.springframework.context.support.ClassPathXmlApplicationContext - Bean 'entityManagerFactory' of type [class org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
6
задан pierre tautou 11 August 2011 в 11:14
поделиться