猿问

Spring 无法在配置文件“dev”中初始化 bean

我的代码抛出这个异常:


Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'Unknown' available

    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:686)

    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1210)

    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)

    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)

    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1089)

    at core.Main.main(Main.java:38)

我正在使用混合配置 - 基于 XML 和注释:


开发环境:


<beans profile="dev">


    <context:component-scan base-package="core"/>

    <context:annotation-config/>


    <import resource="classpath:beans/beans.xml"/>


</beans>

Beans.xml 上下文:包含在 XML 中初始化的其他 bean - 那里没有使用注释。


<beans profile="dev,default">

   <bean ...

   <bean ...

</beans>

这是有问题的配置(请注意下面的评论):


@Configuration

@Profile({"dev"})

public class MyConfig {


    @Bean(value="Unknown")

    @Description("Bean for unknown user")

    public User getUnknownUser() {

        User user = new User(-1);

        user.setUsername("Unknown");

        return user;

    }

}

Spring 正确初始化在 XML 中定义的 bean - 这些 bean 在default配置文件中。只有未知用户在dev个人资料中。


主要类:


ApplicationContext applicationContext = new ClassPathXmlApplicationContext("dev.xml");

applicationContext.getEnvironment().acceptsProfiles("dev");

User unknown = (User)applicationContext.getBean("Unknown");

LOGGER.info(unknown.toString());


qq_花开花谢_0
浏览 231回答 1
1回答

HUWWW

我发现我错过了这一行:&nbsp;&nbsp;&nbsp;&nbsp;applicationContext.refresh();现在可以用了,谢谢
随时随地看视频慕课网APP

相关分类

Java
我要回答