- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个 spring MVC 应用程序。当我尝试在我的 Controller 类中使用 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
的新实例(无论是哪种类型)时,您基本上是在为该 ApplicationContext
中配置的每个 bean 创建新实例。第一次很好,第二次可能会起作用,并且根据 bean 的数量,bean 的类型在那之后会崩溃。由于上下文永远不会被破坏(直到应用程序崩溃并重新启动),您将遇到可能的内存问题、性能问题、奇怪的事务问题等。
一般的经验法则是从不构造ApplicationContext
的新实例,而是使用依赖注入(inject)。
如果你真的想访问 ApplicationContext
,请在你的 Controller 中放置一个该类型的字段,并在其上放置 @Autowired
。
@Controller
public class MyController {
@Autowired
private ApplicationContext ctx;
….
}
然后您可以在方法中查找所需的 bean。如果您使用 ApplicationContext
作为 bean 的工厂,这会很方便。如果您需要的所有 bean 都是单例,那么最好简单地注入(inject)您需要的 bean。
@Controller
public class MyController {
@Autowired
private MappingFileGenerator mfg ;
….
}
现在 Spring 将注入(inject) MappingFileGenerator
并且它可以在您的方法中使用。无需创建 ApplicationContext
的新实例。
更多信息在 Spring Reference Guide 中.
关于java - AnnotationConfigApplicationContext 还没有刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25842512/
我正在使用配置类(模拟)在服务定位器(单例)内预初始化 AnnotationConfigApplicationContext(注册+刷新)。 当我启动应用程序时,我设置了一个配置类属性。我想替换已经注
我正在开发一个 spring MVC 应用程序。当我尝试在我的 Controller 类中使用 AnnotationConfigApplicationContext 时,出现以下错误。我不知道这句话的
我在尝试使用 AnnotationConfigApplicationContext 定义上下文层次结构时遇到问题。 问题是在 beanRefContext.xml 中定义模块上下文并使用另一个上下文(
我有一个项目 A,它使用 AnnotationConfigApplicationContext 来定义应用程序上下文,例如: private static AnnotationConfigAppli
我有一个问题,我有一个 ClassA 需要注入(inject) RoomService ,并且工作正常,我在 ClassA 中发现,roomService 的 id 是相同的。 虽然由于某种原因,我需
我正在获取以下代码的堆栈跟踪, public interface SequenceDAO { public Sequence getSequence(String sequenceId);
我非常基本的 spring 应用程序停止工作,我无法理解发生了什么。pom.xml: 4.1.1.RELEASE org.springframework
我创建了 Spring 应用程序,并且正在独立的 Java 应用程序中加载应用程序上下文。我的代码如下 public class Application { public static voi
我在非 Spring 框架中使用 Spring beans,为此我已经实现了 ApplicationContextAware 来访问 spring beans。 @Service public cla
我使用 Quartz Scheduler(使用 JobDetailFactoryBean)和 Spring 来安排一些作业。现在我通过 XmlApplicationContext 通过 spring
我正在使用 AnnotationConfigApplicationContext 运行我的 SpringBoot 应用程序: ApplicationContext context = new Anno
我知道 springs AnnotationConfigApplicationContext 不仅能够接受 @Configuration 类作为输入,还能够接受普通的 @Component 类和用 J
我编写了一组简单的类来向 friend 展示如何使用 Annotations for AOP(而不是 xml 配置)。我们无法让 @ComponentScan 工作,并且 AnnotationConf
我有一个客户端类,我希望能够在任何地方使用它。我认为单例会起作用。 我应该: 用 @Service 注释我的客户端类,然后在我想要的任何地方使用 @Autowired 注释? 或 创建一个 @Conf
org.springframework.spring-webmvc includes spring-context所以我不确定为什么我在可能的应用程序中看不到 org.springframework.
这是 one of my SO questions 的延续. 我扩展了相同的示例,并希望它能够工作,但是我收到了 NullPointerException。 完整的源代码如下: FirstBean.j
执行 Jar 文件中的类会导致错误嵌套异常: java.lang.NoClassDefFoundError:org/springframework/context/annotation/Annotat
我的应用程序是一个 Web 应用程序,当使用“mvn spring-boot:run”运行时,我能够成功到达端点。唯一的问题是应用程序在 intellij 中以 Debug模式运行时关闭,并且无法调试
我正在尝试参数化 cron 表达式并从属性文件中读取它。在此过程中,我收到以下异常“创建名为'springScheduleCronExample'的bean时出错:bean初始化失败;嵌套异常为jav
我是一名优秀的程序员,十分优秀!