So che ci sono così tante domande simili su questo. Ho esaminato molti di loro ma il problema rimane ancora.Spring bean creato ma non avviato automaticamente
Ho un servizio che viene creato ma non avviato automaticamente. Non c'è (!) Avvio manuale, né nel progetto né nei test (come in this question)
Entrambi i bean vengono trovati e creati, dice l'output di Tomcat. Almeno il primo servizio non viene iniettato dove dovrebbe essere. Non so del secondo.
servizi (Interface):
public interface SchoolService {
public School getSchool(String id);
}
servizio (Attuazione):
@Service
@Transactional
public class SchoolServiceImpl implements SchoolService {
@Autowired
private SchoolDAO schoolDAO;
public School getSchool(String id) {
//database things
return school;
}
}
dove ottiene "chiama"
public class SchoolMenu implements Serializable {
@Autowired
private SchoolService schoolService;
public SchoolMenu() {
//here schoolService is null
School school = schoolService.getSchool("id");
}
}
application-context.xml
<?xml version='1.0' encoding='UTF-8' ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<bean id="SchoolServiceImpl" class="content_management.School.service.SchoolServiceImpl"/>
<bean id="SchoolDAOImpl" class="content_management.School.dao.SchoolDAOImpl"/>
</beans>
Tomcat uscita:
org.springframework.beans.factory.support.DefaultListableBeanFactory: Pre-instantiating singletons in org.s[email protected]57003970: defining beans [SchoolServiceImpl,SchoolDAOImpl]; root of factory hierarchy
org.springframework.beans.factory.support.DefaultListableBeanFactory: Creating shared instance of singleton bean 'SchoolServiceImpl'
org.springframework.beans.factory.support.DefaultListableBeanFactory: Creating instance of bean 'SchoolServiceImpl'
org.springframework.beans.factory.support.DefaultListableBeanFactory: Eagerly caching bean 'SchoolServiceImpl' to allow for resolving potential circular references
org.springframework.beans.factory.support.DefaultListableBeanFactory: Finished creating instance of bean 'SchoolServiceImpl'
org.springframework.beans.factory.support.DefaultListableBeanFactory: Creating shared instance of singleton bean 'SchoolDAOImpl'
org.springframework.beans.factory.support.DefaultListableBeanFactory: Creating instance of bean 'SchoolDAOImpl'
org.springframework.beans.factory.support.DefaultListableBeanFactory: Eagerly caching bean 'SchoolDAOImpl' to allow for resolving potential circular references
org.springframework.beans.factory.support.DefaultListableBeanFactory: Finished creating instance of bean 'SchoolDAOImpl'
Dov'è il mio errore?
Si sta tentando di utilizzare il campo dal costruttore, prima che Spring abbia avuto la possibilità di fare qualsiasi cosa. – chrylis