gpt4 book ai didi

Java,Spring,手动实例化Spring bean,获取 "FileNotFoundException: class path resource [WEB-INF/spring.properties] cannot be opened..."

转载 作者:行者123 更新时间:2023-12-01 15:54:01 27 4
gpt4 key购买 nike

到目前为止,我刚刚使用了单例的 Spring bean,但现在我想在我有 scope="prototype" 的地方使用它。 bean 并在每次需要新实例时实例化它。

在应用程序上下文中我有:

<bean id="processDoNewDocSearch_Spr" class="org.jadefalcon.demo.server.processes.ProcessDoNewDocSearch_Spr" scope="prototype"/>

实际的测试bean类是:

public class ProcessDoNewDocSearch_Spr {

@Resource(name = "savedsearchesService")
private SavedSearchesService savedsearchesService;

public ProcessDoNewDocSearch_Spr () {

}

public void Main () {
SavedSearches ss1 = savedsearchesService.get(3);
String test= ss1.getSearchname();
System.out.print( "Search name: " + test);
}


}

我正在尝试像这样实例化它并调用 Main()方法:

    ApplicationContext applicationContext = new ClassPathXmlApplicationContext ( "applicationContext.xml" );
ProcessDoNewDocSearch_Spr processDoNewDocSearch_Spr = ( ProcessDoNewDocSearch_Spr ) applicationContext.getBean ( "processDoNewDocSearch_Spr" );
processDoNewDocSearch_Spr.Main();

它不起作用,我收到一些关于文件 WEB-INF/spring.properties 不存在的错误,当它存在时,当我删除与 ProcessDoNewDocSearch_Spr 相关的所有内容时,我的应用程序没有问题。类里面,我想知道我这样做是否正确。谢谢

编辑:这是我收到的错误消息:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/spring.properties] cannot be opened because it does not exist
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/spring.properties] cannot be opened because it does not exist
org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:78)
org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:663)
org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:638)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:407)

编辑:在我的应用程序的根目录中,我有一个名为 .classpath 的文件,其中除其他条目外,还有

    <classpathentry kind="output" path="target/spring-hibernate-mysql/WEB-INF/applicationContext.xml"/>
<classpathentry kind="output" path="target/spring-hibernate-mysql/WEB-INF/spring.properties"/>
<classpathentry kind="src" path="src/main/webapp/WEB-INF/spring.properties"/>
<classpathentry kind="src" path="src/main/webapp/WEB-INF/applicationContext.xml"/>

最佳答案

从类路径加载 applicationContext.xml 文件时,必须确保 applicationContext.xml 文件位于应用程序的运行时类路径中。运行时类路径(如部署后和/或在 IDE 之外)通常与构建时类路径不同。

类路径信息

在 Windows 上,类路径是一个环境变量,您可以通过访问系统高级内容来设置。为了防止您的类路径变得巨大,我建议您创建 C:\lib 和 c:\classes 目录。将 c:\classes 目录添加到类路径并删除该目录中的所有类。对于 jar,每个 jar 都必须列在类路径中。我把它们放在 c:\lib 中,这样我就知道在哪里可以找到它们。然后列出类路径中的每个 jar。

以下内容适用于您。通过我描述的设置,您可以将 applicationContext.xml 文件放入 c:\classes 目录中,它也将位于类路径中。

关于Java,Spring,手动实例化Spring bean,获取 "FileNotFoundException: class path resource [WEB-INF/spring.properties] cannot be opened...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com