Смешивание 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>
Другие вопросы по тегам