SpringMVCの設定では、小さなSpringアプリケーションについて主な機能をテストしたいだけです。
これはspring/spring-mvc.xml
ファイルで私のSpringMVCの設定です:main関数でテストすると、SpringMVCの設定が間違っています
<mvc:resources mapping="/BasePlu/**" location="classpath:/static/BasePlu/" />
<mvc:resources mapping="/Lib/**" location="classpath:/static/Lib/" />
<bean id="natureRepository" class="com.autumnframework.blog.repository.NatureRepositoryImpl">
</bean>
これはTest.java
ファイルの私のテストコードです:下記のような
public static void main(String[] args) {
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext(
"classpath:/spring/spring-mvc.xml");
Repository repository = context.getBean(NatureRepositoryImpl.class);
System.out.println("4. " + repository.getAllObjects());
}
間違っ詳細:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0': Invocation of init method failed; nested exception is java.lang.IllegalStateException: WebApplicationObjectSupport instance [ResourceHttpRequestHandler [locations=[class path resource [static/BasePlu/]], resolvers=[[email protected]bd930a]]] does not run in a WebApplicationContext but in: org[email protected]1a86f2f1: startup date [Wed Nov 15 10:31:23 CST 2017]; root of context hierarchy
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1589)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at Test.main(Test.java:26)
Caused by: java.lang.IllegalStateException: WebApplicationObjectSupport instance [ResourceHttpRequestHandler [locations=[class path resource [static/BasePlu/]], resolvers=[[email protected]bd930a]]] does not run in a WebApplicationContext but in: org[email protected]1a86f2f1: startup date [Wed Nov 15 10:31:23 CST 2017]; root of context hierarchy
at org.springframework.web.context.support.WebApplicationObjectSupport.getWebApplicationContext(WebApplicationObjectSupport.java:112)
at org.springframework.web.context.support.WebApplicationObjectSupport.getServletContext(WebApplicationObjectSupport.java:128)
at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.initContentNegotiationStrategy(ResourceHttpRequestHandler.java:306)
at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.afterPropertiesSet(ResourceHttpRequestHandler.java:268)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1648)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1585)
... 12 more
私がコメントしますspring/spring-mvc.xml
ファイル内の2行:
<!--<mvc:resources mapping="/BasePlu/**" location="classpath:/static/BasePlu/" />-->
<!--<mvc:resources mapping="/Lib/**" location="classpath:/static/Lib/" />-->
<bean id="natureRepository" class="com.autumnframework.blog.repository.NatureRepositoryImpl">
</bean>
正常に実行できますが、この方法で正常に実行できる理由はわかりません。
この 'spring-mvc.xml'設定がスタンドアロンアプリケーションで実行される理由について詳しく知りたいですか?アプリケーションはWebとスタンドアロンの両方で実行する必要がありますか?いくつかのユニットテストやその他の理由を実行したい場合は、より良い応答に役立ちます。 –
私はユニットテストをしたいだけです。このユニットテストでは、2行のコメントには関係ありません。 –
単体テストの場合は、JUnitを使用することをお勧めします。これにより、テストしているコード/構成に触れることはありません。ここでのいくつかのポインタは、 'https:// stackoverflow.com/questions/21388482/how-do-i-get-my-spring-junit-test-that-its-in-a-genericapplicationco' –