1.1.14.4.4. fejezet, Spring és kontextusok

Ha szolgáltatás annotációt használunk,

@Service("movieService")
public class MovieServiceImpl implements MovieService {
 
	private MovieDAO movieDAO;
 
	@Autowired
	public MovieServiceImpl(MovieDAO movieDAO) {
		this.movieDAO = movieDAO;
	}
...
 
}

az ApplicationContext-ben megtalálhatjuk a példányt:

  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  return (MovieService) context.getBean("movieService");

De egyszerűbb, ha implementáljuk a ApplicationContextAware interfészt egy bean-ben, mert ilyenkor nem kell mindig feldolgozni az XML fájlt.

package org.primefaces.examples.moviecollector.spring;
 
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
 
public class SpringApplicationContext implements ApplicationContextAware {
 
    private static ApplicationContext CONTEXT;
 
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        CONTEXT = applicationContext;
    }
 
    public static Object getBean(String beanName) {
        return CONTEXT.getBean(beanName);
    }
 
}

Az applicationContext.xml-ben pedig bean-ként inicializáljuk:

<bean id="springApplicationContext" class="org.primefaces.examples.moviecollector.spring.SpringApplicationContext"/>

Majd meghívjuk a statikus metódust:

SpringApplicationContext.getBean("movieService");