Смешивание XML и Java-конфигурации с весны
Я строю новое приложение, которое настраивает Spring через конфигурацию Java, а не XML. Это приложение зависит от модуля, который использует конфигурацию стиля XML. Когда я пытаюсь запустить свое приложение, я получаю следующую ошибку:
No qualifying bean of type [com.myModule.myServiceImp] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
Этот bean-компонент должен быть объявлен в applicationContext.xml модуля. Какой правильный способ справиться с этим? Я попытался просто добавить его, как если бы я связывал контексты приложения вместе в приложении web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:com/myModule/appbase-context.xml
com.myApp.AppConfig
</param-value>
</context-param>
Но я все еще получил ту же ошибку. Как правильно это сделать?
1 ответ
В своем классе конфигурации вы можете импортировать конфигурацию xml через @ImportResource
аннотаций.
Что-то вроде этого:
@Configuration
@ImportResource({"classpath:appbase-context.xml"})
public class AppConfig {
// @Bean definitions here...
}
Помните, что когда вы используете конфигурацию Java Spring, вам нужно указать дополнительный context-param
это говорит о классе, который нужно использовать для контекста вашего приложения:
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>