Spring 无法在配置文件中初始化 bean "dev"
Spring cannot initialize bean in profile "dev"
我的代码抛出这个异常:
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 中定义的 beans - 这些 beans 在 default
配置文件中。 dev
个人资料中只有未知用户。
主要class:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("dev.xml");
applicationContext.getEnvironment().acceptsProfiles("dev");
User unknown = (User)applicationContext.getBean("Unknown");
LOGGER.info(unknown.toString());
感谢您的帮助
我发现我漏掉了这一行:
applicationContext.refresh();
现在可以了,谢谢
我的代码抛出这个异常:
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 中定义的 beans - 这些 beans 在 default
配置文件中。 dev
个人资料中只有未知用户。
主要class:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("dev.xml");
applicationContext.getEnvironment().acceptsProfiles("dev");
User unknown = (User)applicationContext.getBean("Unknown");
LOGGER.info(unknown.toString());
感谢您的帮助
我发现我漏掉了这一行:
applicationContext.refresh();
现在可以了,谢谢