Spring MVC, внедрение Hibernate Service в Spring bean не выполняется, не знаю почему - PullRequest
0 голосов
/ 10 июня 2011

У меня есть подпружиненный компонент, который я настроил в applicationContext, как показано ниже:

<bean id="beanIRPlus" class="org.jadefalcon.demo.server.Spring.beans.BeanIRPlus" />

Затем у меня есть Hibernate Service, как показано ниже, который я пытаюсь внедрить в бин Spring. Обычно, например, если я использую bean-компонент-прототип, который внедряется в мой контроллер и у которого есть встроенная служба Hibernate, он работает нормально, однако для этого конкретного bean-компонента это синглтон, поэтому он создается при запуске приложения. Я удостоверился, что даже поместил объявление bean-компонента в самый конец файла applicationContext.xml, чтобы выяснить, может быть, его нужно поместить после всего, что связано с Hibernate, но проблема все еще сохраняется. Это дает исключение нулевого указателя, что объект CasesService не существует. Любой совет о том, что я делаю неправильно, очень ценится:

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.jadefalcon.demo.domain.Cases;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service("casesservice")
@Transactional
public class CasesService {

    protected static Logger logger = Logger.getLogger("service");

    @Resource(name = "sessionFactory")
    private SessionFactory sessionFactory;

    public void add(Cases cases) {
        logger.debug("Saving new search");

        // Retrieve session from Hibernate
        Session session = sessionFactory.getCurrentSession();

        // Save
        session.save(cases);
    }
}

1 Ответ

2 голосов
/ 10 июня 2011

Я не видел, как вы пытаетесь это сделать. У вас есть как минимум два варианта:

  • XML. Определите <property name=".." ref="casesservice"> в определении вашего контроллера EJB
  • аннотаций. Используйте @Autowired private CaseService service (или @Inject)
...