problemi relativi all'inizializzazione di Spring in ambienti diversi

0

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?

    
posta NingLee 23.10.2014 - 11:30
fonte

1 risposta

0

Sì, puoi utilizzare @Autowired indipendentemente dal modo in cui crei il contesto dell'applicazione.

Ci sono diversi modi per creare un contesto applicativo in un'applicazione standalone. Naturalmente puoi ancora utilizzare i tradizionali file di configurazione XML, ma un'opzione alternativa da prendere in considerazione è spring-boot . Ti consente di creare applicazioni completamente guidate da annotazioni che si basano principalmente sulle convenzioni sulla configurazione. L'avvio automatico di un'applicazione semplice standalone si riduce a:

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Main implements CommandLineRunner {

    @Autowired
    private UserService userService;

    public void run(String... args) throws Exception {
        System.out.println(userService.findUser(42L));
    }   

    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }

}
    
risposta data 23.10.2014 - 17:00
fonte

Leggi altre domande sui tag