我有一个用例,我需要在ApplicationContext加载时只在bean中调用一个(非静态)方法.如果我使用MethodInvokingFactoryBean吗?或者我们有更好的解决方案?
作为旁注,我使用ConfigContextLoaderListener在Web应用程序中加载应用程序上下文.并希望,如果bean'A'被实例化,只需调用methodA()一次.
怎么能很好地做到这一点?
我是Spring Framework的新手,我一直在玩它并将一些示例应用程序放在一起,以便评估Spring MVC以用于即将到来的公司项目.到目前为止,我非常喜欢我在Spring MVC中看到的内容,看起来非常容易使用,并鼓励您编写非常适合单元测试的类.
就像练习一样,我正在为我的一个示例/测试项目编写一个主要方法.我不清楚的一件事是BeanFactory和之间的确切差异ApplicationContext- 适合在哪些条件下使用?
我理解ApplicationContext扩展BeanFactory,但如果我只是编写一个简单的主方法,我是否需要ApplicationContext提供额外的功能?究竟是什么类型的额外功能ApplicationContext提供了?
除了回答"我应该在main()方法中使用哪个"之外,对于在这种情况下我应该使用哪种实现,是否有任何标准或指南?我的main()方法是否应该依赖于bean /应用程序配置以XML格式编写 - 这是一个安全的假设,还是我将用户锁定为特定的东西?
这个答案是否会在网络环境中发生变化 - 如果我的任何课程需要了解Spring,他们是否更有可能需要ApplicationContext?
谢谢你的帮助.我知道很多这些问题可能在参考手册中得到了解答,但是我很难找到这两个界面的明确细分以及每个界面的优点/缺点而不通过精细梳齿阅读手册.
我在Eclipse中开发了一个动态Web项目.现在我可以使用以下URL通过浏览器访问它:
http://localhost:8080/MyDynamicWebApp
Run Code Online (Sandbox Code Playgroud)
现在我想将访问URL更改为
http://localhost:8080/app
Run Code Online (Sandbox Code Playgroud)
我从项目"属性| Web项目设置|上下文根"中更改了上下文根.
但它没有用.Web应用程序仍具有之前的访问URL.我已经在Tomcat上重新部署了应用程序,重新启动了Tomcat并完成了应该完成的所有操作,但访问URL与之前的相同.
我发现该server.xml文件没有附加WAR文件.那么Tomcat如何确定我的Web应用程序的上下文根server.xml并允许我通过该URL访问应用程序?
应用程序上下文和Web应用程序上下文有什么区别?
我知道WebApplicationContext用于面向Spring MVC架构的应用程序?
我想知道ApplicationContextMVC应用程序有什么用?什么样的豆类定义ApplicationContext?
我试图在Spring中创建我的第一个bean但是在加载上下文时遇到了问题.我在src/main/resources中有一个bean的配置XML文件.
我收到以下IOException:
线程"main"中的异常org.springframework.beans.factory.BeanDefinitionStoreException:从类路径资源[src/main/resources/beans.xml]解析XML文档的IOException; 嵌套异常是
java.io.FileNotFoundException:类路径资源[src/main/resources/beans.xml]无法打开,因为它不存在
但我不明白,因为我做了以下代码测试:
File f = new File("src/main/resources/beans.xml");
System.out.println("Exist test: " + f.exists());
Run Code Online (Sandbox Code Playgroud)
这让我真实!resources在类路径中.怎么了?
对于常规的Servlet,我想你可以声明一个上下文监听器,但对于Spring MVC,Spring会让这更容易吗?
此外,如果我定义一个上下文监听器然后需要访问我servlet.xml或中定义的bean,我applicationContext.xml将如何访问它们?
我想把自己注入ApplicationContext一个bean.
就像是
public void setApplicationContext(ApplicationContect context) {
this.context = context;
}
Run Code Online (Sandbox Code Playgroud)
那可能在春天吗?
我有以下测试课
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/services-test-config.xml"})
public class MySericeTest {
@Autowired
MyService service;
...
}
Run Code Online (Sandbox Code Playgroud)
是否可以通过services-test-config.xml其中一种方法以编程方式访问?喜欢:
ApplicationContext ctx = somehowGetContext();
Run Code Online (Sandbox Code Playgroud) 我正在使用Spring 3.1.1.RELEASE,JUnit 4.8.1和HSQL 2.7.7内存数据库.我有一个注释为的测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-trainingSessionServiceContext.xml" })
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
public class TrainingSessionServiceTest
{
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行"mvn clean test"时,似乎所有测试类在上述类失败后运行,因为内存数据库被销毁而不是重新创建.我得到的错误就像
org.hibernate.exception.SQLGrammarException: user lacks privilege or object not found: CB_ORGANIZATION" type="javax.persistence.PersistenceException">javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: user lacks privilege or object not found: CB_ORGANIZATION
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1360)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:817)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:771)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
at $Proxy46.find(Unknown Source)
at org.mainco.subco.organization.repo.OrganizationDaoImpl.findById(OrganizationDaoImpl.java:77)
at org.mainco.subco.pd.repo.LinkDaoTest.createDummyLink(LinkDaoTest.java:686)
at org.mainco.subco.pd.repo.LinkDaoTest.testSaveLink(LinkDaoTest.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
Run Code Online (Sandbox Code Playgroud)
以下是我如何设置测试类(在上面的类之后运行),它给出了例外...
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-context.xml" …Run Code Online (Sandbox Code Playgroud) 请NoSuchBeanDefinitionException在Spring中解释以下关于异常的内容:
本文旨在对NoSuchBeanDefinitionException使用Spring的应用程序中出现的问题进行全面的问答.
spring ×9
java ×2
junit ×2
contextroot ×1
eclipse ×1
hsqldb ×1
java-ee ×1
javabeans ×1
managed-bean ×1
spring-mvc ×1
spring-test ×1
startup ×1