带有XML配置的Spring Java Config

时间:2015-12-02 16:22:50

标签: java spring spring-mvc

我正在尝试将Spring java配置与基于XML的配置一起使用,但是使用spring profile功能的bean永远不会被创建。你能说出可能是根本原因吗?我的应用程序使用Spring 3.2。

我的Java配置类 -

@Configuration
@ComponentScan({ "com.aexp.mars" })
@Profile("dev")
@PropertySource("classpath:messages.properties" )
@ImportResource("classpath:/spring/spring-profiles.xml")
public class SpringConfigDev{

    private DriverManagerDataSource dataSource;

Spring XML配置 -

<beans profile="dev">
    <bean id="marsURLConfig" class="com.aexp.mars.common.utils.MarsURLConfig">
        <property name="solrBaseURL" value="http://localhost:8080/solr"/>
    </bean> 
</beans>

使用主方法

中的以下代码激活开发配置文件
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();

        String env = "dev";

        context.getEnvironment().setActiveProfiles(env);

        context.register(SpringConfigDev.class);

        context.refresh();

我的一个Spring组件使用自动装配和MarsURLConfig类型,我在下面得到了例外。

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
 No matching bean of type [com.aexp.mars.common.utils.MarsURLConfig] 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)}

如果我从xml中删除profile =“dev”,则应用程序正常运行

1 个答案:

答案 0 :(得分:0)

这似乎是基于Spring 3.2基于Java的配置方法的已知限制。当我们使用Java配置时,Spring 3.2不支持bean级别配置文件创建,因为我试图从基于Java的配置类加载XML,所以它对我没有用。