如果您对SpringBeanAutowiringSupport不会在jUnit测试中注入bean和spring单元测试无法注入bean感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Spring
如果您对SpringBeanAutowiringSupport不会在jUnit测试中注入bean和spring单元测试无法注入bean感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解SpringBeanAutowiringSupport不会在jUnit测试中注入bean的各种细节,并对spring单元测试无法注入bean进行深入的分析,此外还有关于@Autowired注释无法在JUnit类中注入bean、Error creating bean with name ''org.springframework.aop.support.DefaultBeanFactoryPointcutAdvi...、Error creating bean with name ‘org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0‘、java – Jax-ws,spring和SpringBeanAutowiringSupport的实用技巧。
本文目录一览:- SpringBeanAutowiringSupport不会在jUnit测试中注入bean(spring单元测试无法注入bean)
- @Autowired注释无法在JUnit类中注入bean
- Error creating bean with name ''org.springframework.aop.support.DefaultBeanFactoryPointcutAdvi...
- Error creating bean with name ‘org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0‘
- java – Jax-ws,spring和SpringBeanAutowiringSupport
SpringBeanAutowiringSupport不会在jUnit测试中注入bean(spring单元测试无法注入bean)
我使用SpringBeanAutowiringSupport在某些对象中进行bean注入。问题是,在jUnit测试中无法注入bean。为了进行测试,使用了SpringJUnit4ClassRunner。
public class DossierReportItemXlsImporterImpl implements DossierRerportItemXlsImporer { private final Logger logger = Logger.getLogger(getClass()); // are not autowired. @Autowired private DossierReportService dossierReportService; @Autowired private DossierReportItemService dossierReportItemService; @Autowired private NandoCodeService nandoCodeService; public DossierReportItemXlsImporterImpl(){ SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); } //...}public class DossierRerportItemXlsImporerTest extends AuditorServiceTest{ // injected OK @Autowired private DossierReportService dossierReportService; @Autowired private DossierReportItemService dossierReportItemService; @Test public void testXlsImport(){ DossierRerportItemXlsImporer importer = new DossierReportItemXlsImporterImpl(); importer.processImport(createDossierReport(), loadFile()); // ... } // ...}
有谁知道,为什么使用注入SpringBeanAutowiringSupport
在jUnit测试中不起作用?
答案1
小编典典感谢M. Denium的帮助,他的解决方案得以奏效。
public class DossierReportItemXlsImporterImpl implements DossierRerportItemXlsImporer { private final Logger logger = Logger.getLogger(getClass()); @Autowired private DossierReportService dossierReportService; @Autowired private DossierReportItemService dossierReportItemService; @Autowired private NandoCodeService nandoCodeService; public DossierReportItemXlsImporterImpl(final ApplicationContext contex){ contex.getAutowireCapableBeanFactory().autowireBean(this); } //...} public class DossierRerportItemXlsImporerTest extends AuditorServiceTest{ @Autowired private ApplicationContext context; @Autowired private DossierReportService dossierReportService; @Autowired private DossierReportItemService dossierReportItemService; @Test public void testXlsImport(){ DossierRerportItemXlsImporer importer = new DossierReportItemXlsImporterImpl(context); importer.processImport(createDossierReport(), loadFile()); // ... } // ... }
@Autowired注释无法在JUnit类中注入bean
我的测试课:
public class myTest extends TestCase{@AutowiredBeanClass beanObjectpublic void beanTest(){Classdata data = beanObject.getMethod();}}
我在行上得到一个空指针异常:
Classdata data = beanObject.getMethod();
在beanObject.getMethod();
精确的给出空指针异常
如何使Junit类中的beanObject字段自动装配成为可能,以便可以使用“ BeanClass”类中的方法?
从评论中复制:
用简单的术语来说.. beanClass是具有某些方法的接口..我用
@Service("beanObject")
注释标记了该beanClass。.banClass
是由具有方法实现的beanClassImpl类实现的。.我需要在我的testClass中使用这些实现来获取要比较的数据..为此,我正在@Autowired
我的testClass..mi中执行
beanClass beanObject。
答案1
小编典典您可能需要用以下注释装饰测试:
@ContextConfiguration(locations = {/* your xml locations here */})@RunWith(SpringJUnit4ClassRunner.class)
或者,如果您使用JUnit 3.x,则应从 AbstractJUnit38SpringContextTests
参考:
TestContext支持类
更新: 问题似乎是找不到上下文文件(请参阅注释中的讨论)。
用简单的术语来说.. beanClass是具有某些方法的接口..我已经用@Service(“
beanObject”)注解标记了该beanClass。.banClass是由具有方法实现的beanClassImpl类实现的。.我需要使用那些方法我的testClass中的实现以获取要比较的数据..为此,我正在testClass中执行@Autowired
beanClass beanObject。
更多更新:
不要注释接口,不要注释实现类。注释界面@Service
无效!
Error creating bean with name ''org.springframework.aop.support.DefaultBeanFactoryPointcutAdvi...
昨晚在 使用 spring aop, 然后 Tomcat 启动的时候, 报了这么个错:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0'': Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableBeanFactory.getSingletonMutex()Ljava/lang/Object;
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans(BeanFactoryAdvisorRetrievalHelper.java:92)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors(AbstractAdvisorAutoProxyCreator.java:101)
at org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator.shouldSkip(AspectJAwareAdvisorAutoProxyCreator.java:103)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessBeforeInstantiation(AbstractAutoProxyCreator.java:249)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:984)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:955)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:466)
... 55 more
Caused by: java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableBeanFactory.getSingletonMutex()Ljava/lang/Object;
at org.springframework.aop.support.AbstractBeanFactoryPointcutAdvisor.resetAdviceMonitor(AbstractBeanFactoryPointcutAdvisor.java:81)
at org.springframework.aop.support.AbstractBeanFactoryPointcutAdvisor.setBeanFactory(AbstractBeanFactoryPointcutAdvisor.java:76)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1593)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1561)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
... 67 more
- Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''dataSourceRead'' defined in file [E:\code-test\jdd-admin\target\jdd_admin-1.0-SNAPSHOT\WEB-INF\classes\spring\applicationContext-mysql.xml]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0'': Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableBeanFactory.getSingletonMutex()Ljava/lang/Object;
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:472)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5118)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5634)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1863)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:361)
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0'': Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableBeanFactory.getSingletonMutex()Ljava/lang/Object;
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans(BeanFactoryAdvisorRetrievalHelper.java:92)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors(AbstractAdvisorAutoProxyCreator.java:101)
at org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator.shouldSkip(AspectJAwareAdvisorAutoProxyCreator.java:103)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessBeforeInstantiation(AbstractAutoProxyCreator.java:249)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:984)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:955)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:466)
... 55 more
Caused by: java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableBeanFactory.getSingletonMutex()Ljava/lang/Object;
at org.springframework.aop.support.AbstractBeanFactoryPointcutAdvisor.resetAdviceMonitor(AbstractBeanFactoryPointcutAdvisor.java:81)
at org.springframework.aop.support.AbstractBeanFactoryPointcutAdvisor.setBeanFactory(AbstractBeanFactoryPointcutAdvisor.java:76)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1593)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1561)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
... 67 more
五月 04, 2018 10:16:38 下午 org.apache.catalina.core.StandardContext startInternal
我的 aop 切面代码也很简单,精简后如下:
1 public class DataSourceExchange implements MethodBeforeAdvice, AfterReturningAdvice {
2
3 private static Logger logger = LoggerFactory.getLogger(DataSourceExchange.class);
4
5 @Override
6 public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {
7 logger.info(method.getName()+" clear datasouceType");
8 DataSourceContext.clearDbType();
9 }
10
11 @Override
12 public void before(Method method, Object[] objects, Object o) throws Throwable {
13 logger.info(method.getName()+" switch datasouceType");
14 }
15
16 }
后来在网上查了下, 好像是 spring beans 的版本不对,我看了下我用的是 4.1.6.RELEASE, 后来我改成了 4.3.2.RELEASE, 启动就 OK 了。
Error creating bean with name ‘org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0‘
解决方案:
请在 pom.xml 添加 依赖包
<dependency>
<groupId>org.aspectj</groupId >
<artifactId>aspectjweaver</artifactId >
<version>1.6.11</version >
</dependency>
java – Jax-ws,spring和SpringBeanAutowiringSupport
我扩展了 SpringBeanAutowiringSupport,自动装配根本不适用于Spring 2.5,
tomcat6中.
什么都没注入.
我在main方法中测试了那些bean自动装配,使用classpathcontext,一切都注入正常.
但不适用于jax-ws端点.
你有想法吗?
解决方法
<context:annotation-config />
但要启用对@Endpoint注释的支持,必须添加以下元素:
<context:component-scan base-package="" />
今天关于SpringBeanAutowiringSupport不会在jUnit测试中注入bean和spring单元测试无法注入bean的分享就到这里,希望大家有所收获,若想了解更多关于@Autowired注释无法在JUnit类中注入bean、Error creating bean with name ''org.springframework.aop.support.DefaultBeanFactoryPointcutAdvi...、Error creating bean with name ‘org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0‘、java – Jax-ws,spring和SpringBeanAutowiringSupport等相关知识,可以在本站进行查询。
本文标签: