有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从子项目到appcontext的java bootstrap@Configuration。xml

我对春天很陌生,所以我很好;)

我有一个被称为“核心”的共享模块和几个依赖于核心的项目。子项目有spring/app-context.xml个文件,在执行它们的环境中,spring由另一个框架初始化

在“核心”项目中,我想使用@Configuration方法定义一些单例服务:

@Configuration
public class AppConfig
{
    @Bean
    public MyService myService()
    {
        return new MyServiceImpl();
    }
}

然后将核心打包在一个jar中,并包含在子项目的类路径中

如何引导核心模块的服务,以便它们可用于子项目中的@Autowire

编辑:

我遇到的错误是:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [package.MyService] 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)}

我已经尝试了以下每一项(独家):

<context:component-scan base-package="package" />
<import resource="classpath*:spring/core-context.xml" /><!-- defined in core.jar with MyService as a bean -->
<bean class="package.AppConfig" />

但仅将其添加到子项目的应用程序上下文中。xml似乎解决了这个错误:

<bean id="MyService" class="package.MyServiceImpl" />

共 (1) 个答案

  1. # 1 楼答案

    如果你看一下JavaDoc,它说明了一切:

    Via Spring XML

    As an alternative to registering @Configuration classes directly against an AnnotationConfigApplicationContext, @Configuration classes may be declared as normal definitions within Spring XML files:

    <beans>
        <context:annotation-config/>
        <bean class="com.acme.AppConfig"/>
    </beans>
    

    听起来像是简单地将@Configuration类作为bean包含到xml配置中就可以获得它

    除此之外,您还应该能够通过component-scan获取该类,因为@Configuration具有@Component的元注释