Бих искал да заредя в моето Spring MVC уеб приложение (опаковано като WAR) някои компоненти на Spring framework, анотирани с @Service
от външен буркан, който отговаря за достъп до база данни и намиращ се в classpathпод /WEB-INF/lib. Ако е възможно, би било желателно да се зареждат автоматично с помощта на анотацията @Autowired
.
Следвам успешно решението в този връзка1:
this.ctx = new ClassPathXmlApplicationContext("services-context.xml");
this.myAService = ctx.getBean("myAService");
Това решение обаче използва Spring API функцията getBean, която се счита за лоша практика (вижте link2).
Също така опитах, без късмет, още две неща за зареждане на приложението Context на външния буркан:
appContext.xml на WAR:
<import resource="classpath*:/WEB-INF/lib/pathToExternalJar/applicationContext.xml">
Уеб xml на WAR -> заредете appContext на jar, както е описано тук (link3). (напр. *applicationContext.xml):
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:localSpringContext.xml classpath:*applicationContext.xml </param-value> </context-param>
Какъв е най-добрият подход за правилно зареждане на тези зърна и как трябва да се направи?