AnnotationConfigApplicationContext尚未刷新 - 出了什么问题?

时间:2015-02-09 07:31:35

标签: java spring configuration

我的基本弹簧应用程序停止工作,我无法理解发生了什么。 的的pom.xml:

<properties>
    <spring.version>4.1.1.RELEASE</spring.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
</dependencies>

配置类:

@Configuration
public class MyConfig {

@Bean
public HelloWorld helloWorld() {
         return new HelloWorld();
    }
}

Bean类:

public class HelloWorld {
    private String message;

    public void setMessage(String message) {
        this.message = message;
    }
    public String getMessage() {
         return message;
    }
}

申请入门点:

public class MainApp {
public static void main(String[] args) {
    AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
    ctx.register(MyConfig.class);
    HelloWorld bean = ctx.getBean(HelloWorld.class);
    bean.setMessage("ladjfaj");
    System.out.println(bean.getMessage());
}
}

我收到了错误

  

线程“main”中的异常java.lang.IllegalStateException:org.springframework.context.annotation.AnnotationConfigApplicationContext@6ebf8cf5尚未刷新       在org.springframework.context.support.AbstractApplicationContext.assertBeanFactoryActive(AbstractApplicationContext.java:943)       在org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:967)       在com.nikolas.config.MainApp.main(MainApp.java:12)

3 个答案:

答案 0 :(得分:16)

您必须先致电ctx.refresh(),然后才能致电ctx.getBean(HelloWorld.class);

答案 1 :(得分:0)

如果您不想显式调用ctx.refresh(),只需像这样初始化ApplicationContext: new AnnotationConfigApplicationContext(MyConfig.class),然后配置将被隐式注册和刷新

答案 2 :(得分:0)

只要有人遇到类似的问题并且不能直接与上述示例相关,这可能会有所帮助:

当我的一个存储库位于其中所包含的文件夹之外时,我遇到了问题

@EnableJpaRepositories(basePackages = {"com.myproject.repositores"})

这是第一个例外:

说明:字段配置文件中的存储库 com.myproject.featurepackage.config.ProfileService需要一个Bean 键入“ com.myproject.featurepackage.ProfileRepository”无法 被发现。注入点具有以下注释:- @ org.springframework.beans.factory.annotation.Autowired(required = true)

之后我访问ApplicationContext以实例化一个时,我遇到了错误

org.springframework.context.annotation.AnnotationConfigApplicationContext@4983159f 尚未刷新