非常に基本的な春のアプリケーションが機能しなくなり、何が起こったのか理解できません。 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());
}
}
エラーが発生します
スレッド「メイン」の例外Java.lang.IllegalStateException:org.springframework.context.annotation.AnnotationConfigApplicationContext@6ebf8cf5は、org.springframework.context.support.AbstractApplicationContext.assertBeanFactoryActive(AbstractApplicationContext.Java:943)でまだ更新されていません。 springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.Java:967)at com.nikolas.config.MainApp.main(MainApp.Java:12)
ctx.refresh()
を呼び出す前にctx.getBean(HelloWorld.class);
を呼び出す必要があります
ctx.refresh()
を明示的に呼び出さない場合は、ApplicationContextをnew AnnotationConfigApplicationContext(MyConfig.class)
のように初期化するだけで、設定が暗黙的に登録および更新されます