I would like to load inside my Spring MVC Web Application (packaged as WAR) some Spring framework beans annotated with @Service
from an external jar, which is in charge of accessing a database and located in the classpath under /WEB-INF/lib. If possible, it would be desirable to load them automatically using the @Autowired
annotation.
I have followed successfully the solution in this link1:
this.ctx = new ClassPathXmlApplicationContext("services-context.xml");
this.myAService = ctx.getBean("myAService");
However, this solution uses Spring API function getBean which is considered a bad practice (see link2).
I also tried, without luck two more things to load the external jar´s applicationContext:
WAR´s appContext.xml:
<import resource="classpath*:/WEB-INF/lib/pathToExternalJar/applicationContext.xml">
WAR´s web xml -> load the jar´s appContext as described here (link3). (e.g. *applicationContext.xml):
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:localSpringContext.xml classpath:*applicationContext.xml </param-value> </context-param>
What is the best approach to load those beans properly and how should it be done?