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它。

@Controller

public class MyController {

@Autowired

private ApplicationContext ctx;

….

}

然后,您可以在方法中查找所需的bean。如果您将ApplicationContext用作工厂的bean,这会很方便。如果您需要的所有豆都是单例的,则最好简单地注入您需要的豆。

@Controller

public class MyController {

@Autowired

private MappingFileGenerator mfg ;

….

}

现在,Spring将注入,MappingFileGenerator并且可以在您的方法中使用它。无需创建的新实例ApplicationContext

有关更多信息,请参见《 Spring参考指南》。

以上是 AnnotationConfigApplicationContext尚未刷新 的全部内容, 来源链接: utcz.com/qa/404882.html

回到顶部