AnnotationConfigApplicationContext尚未刷新
我正在开发Spring
MVC应用程序。当我尝试在控制器类中使用AnnotationConfigApplicationContext时,出现以下错误。我不知道这句话到底意味着什么。
@RequestMapping(value = "/generate", method = RequestMethod.POST)public ModelAndView generateMappingFile(@ModelAttribute Mapping mapping)
{
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
MappingFileGenerator mfg = ctx.getBean(MappingFileGenerator.class);
}
错误信息->
java.lang.IllegalStateException:org.springframework.context.annotation.AnnotationConfigApplicationContext@116b3c0 has not been refreshed yet
有人可以解释一下这里出了什么问题吗?我正在使用Spring 4.0.1 ..我是Spring MVC的新手。
回答:
当创建一个新的实例ApplicationContext
(不管是哪种类型)时,基本上就是在其中配置的每个bean都创建新实例ApplicationContext
。第一次很好,第二次可能有用,并且根据bean的数量,之后bean的类型将崩溃。由于上下文永远不会被破坏(直到应用程序崩溃并重新启动),因此您将遇到可能的内存问题,性能问题,奇怪的事务问题等。
一般经验法则是 构造an的新实例,ApplicationContext
而改用依赖项注入。
如果您真的想访问ApplicationContext
该类型的字段,请在控制器中放置@Autowired
它。
@Controllerpublic class MyController {
@Autowired
private ApplicationContext ctx;
….
}
然后,您可以在方法中查找所需的bean。如果您将ApplicationContext
用作工厂的bean,这会很方便。如果您需要的所有豆都是单例的,则最好简单地注入您需要的豆。
@Controllerpublic class MyController {
@Autowired
private MappingFileGenerator mfg ;
….
}
现在,Spring将注入,MappingFileGenerator
并且可以在您的方法中使用它。无需创建的新实例ApplicationContext
。
有关更多信息,请参见《 Spring参考指南》。
以上是 AnnotationConfigApplicationContext尚未刷新 的全部内容, 来源链接: utcz.com/qa/404882.html