Ho alcune domande sull'inizializzazione di primavera in un ambiente diverso.
1. Nel contesto del contenitore web, come tomcat.
Sapevo che la molla può essere inizializzata dichiarando
org.springframework.web.context.ContextLoaderListener
nel campo <listener-class>
.
Sarà inizializzato automaticamente all'avvio di tomcat. (Penso che sia giusto :-))
2. Nel contesto di JUnit
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:appContext.xml")
le annotazioni possono essere utilizzate per inizializzare il contesto Spring.
In questi due casi, possiamo usare come
@Autowired
private ServiceDao serviceDao;
per utilizzare il servizio a pagamento, e non abbiamo quasi mai utilizzato il metodo ApplicationContext.getBean()
.
3. In un ambiente J2SE comune
Devo inizializzare manualmente il contesto di primavera,
ApplicationContext appContext = new FileSystemXmlApplicationContext(xx.xml)
e quindi usa appContext.getBean(XX)
per ottenere il bean?
in questo caso, può essere utilizzato @Autowired
?
Come si fa?
Aggiornamento:
Provo lo spring-boot, penso che la variabile possa essere autowired, perché la classe è annotata con @Component
, e con @ComponentScan
nella classe principale, la variabile può essere autowired.
Ma ho usato spring xml prima, e ho qualche iniezione come questa, non so come autowire la variabile.
<bean id="XXXMap" class="com.xx">
<property name="handlerMap">
<map>
<entry key="XXX" value="YYY"/>
</map>
</property>
</bean>
usa @component
, credo che XXXMap
possa essere autowired, ma come viene inizializzata la mappa?