springtest mapper注入失败问题解决 {@org.springframework.beans.factory.annotation.Autowired(required=true)}...

在遇到SpringTest中Mapper注入失败的问题时,由于最初搜索错误的异常类型,导致解决方案难以找到。通过查看异常堆栈底部的`@Autowired`注解,找到了问题的关键。解决方案在于更新`applicationContext.xml`,启用`<context:annotation-config/>`以实现自动配置。此外,确保IDEA中测试资源被正确标记为`test resources`。在非Web测试场景下,仅加载`applicationContext.xml`,并避免扫描配置错误,以防止启动时的Bean创建异常。
摘要由CSDN通过智能技术生成

 

 

花费了一下午都没有搜索到相关解决方案的原因,一是我使用的 UnsatisfiedDependencyException 这个比较上层的异常(在最前面)来进行搜索,

范围太广导致没有搜索到,而且即便是有人提出是包扫描的问题,但是我spring的基础太差,所以也不知道该怎么操作,

然后这次又印证了我之前的那篇博客,即碰到异常一定要找到根异常,参考我之前的文章: java spring 等启动项目时的异常 或 程序异常的解决思路

根异常一般在异常行的末尾,这次就是搜索末尾的 {@org.springframework.beans.factory.annotation.Autowired(required=true)} ,才搜索到下面的这篇解决的博客的,

 

注:这个问题跟类名,方法名,idea版本 没有任何关系。

注:每次使用springtest进行非web的测试时,都需要按照下面的正确示例来写注解,并且设置idea resources为 test resources,并且在 applicationContext.xml 中,

把包扫描 设置为 自动配置  <context:annotation-config /> ,否则会报  BeanCreationException: Error creating bean with name

 

参考:https://blog.csdn.net/zixiao217/article/details/52959886/

 

applicationContext.xml

<!-- 将以下内容替换 -->
    <context:component-scan base-package="org.kinome">
        <context:exclude-filter type="annotation"
                                expression="org.springframework.stereotype.Controller"></context:exclude-filter>
    </context:component-scan>
<!-- 替换为 -->
    <context:annotation-config />

这里是包扫描出现了问题导致的,原因不明,

不过如果替换成了这个的话,项目启动时会有一些启动类出现注入问题,所以如果要做springtest的话,用替换为的包扫描自动配置,如果要启动项目的话,就换回替换之前的包扫描配置。(两个配置不用哪个注释掉就可以了,当做选项灵活配置)

 

注意: 如果仅仅做springtest,不涉及web,那么就只加载 applicationContext.xml 就可以了,否则会报错。

正确示例:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class TestExample {

    @Autowired
    AssetsDevicetypeRefactorMapper assetsDevicetypeRefactorMapper;


    @Test
    public void test() {
        AssetsDevicetypeRefactorExample example = new AssetsDevicetypeRefactorExample();
        AssetsDevicetypeRefactorExample.Criteria criteria = example.createCriteria();
        example.or().andIscustomizeEqualTo("N");
        example.or().andInfosysidEqualTo(1);
        List<AssetsDevicetypeRefactor> assetsDevicetypeRefactors = assetsDevicetypeRefactorMapper.selectByExample(example);
        for (AssetsDevicetypeRefactor adr
                : assetsDevicetypeRefactors
        ) {
            System.out.println(adr.getName());
        }
    }
}

 

要想正常使用springtest,还需要把resources设置为 test resources

 

 

 

 

下面是只引入 applicationContext.xml ,但是包扫描没有用自动配置,而是用的那个自定义的包扫描(也就是上面那个长的),做springtest时出现的异常

"C:\Program Files\Java\jdk1.8.0_151\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:7284,suspend=y,server=n -ea -Didea.test.cyclic.buffer.size=1048576 -javaagent:C:\Users\Administrator\.IntelliJIdea2018.3\system\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "C:\Program Files\JetBrains\IntelliJ IDEA 2018.3.2\lib\idea_rt.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2018.3.2\plugins\junit\lib\junit-rt.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2018.3.2\plugins\junit\lib\junit5-rt.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\mysql-connector-java-5.1.28-bin.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_151\jre\lib\rt.jar;D:\project2\RM\target\test-classes;D:\project2\RM\target\classes;C:\Users\Administrator\.m2\repository\org\springframework\spring-webmvc\4.3.7.RELEASE\spring-webmvc-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-expression\4.3.7.RELEASE\spring-expression-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-web\4.3.7.RELEASE\spring-web-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.8.8\jackson-databind-2.8.8.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.8.0\jackson-annotations-2.8.0.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.8.8\jackson-core-2.8.8.jar;C:\Users\Administrator\.m2\repository\org\hibernate\hibernate-validator\5.4.1.Final\hibernate-validator-5.4.1.Final.jar;C:\Users\Administrator\.m2\repository\javax\validation\validation-api\1.1.0.Final\validation-api-1.1.0.Final.jar;C:\Users\Administrator\.m2\repository\org\jboss\logging\jboss-logging\3.3.0.Final\jboss-logging-3.3.0.Final.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\classmate\1.3.1\classmate-1.3.1.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-jdbc\4.3.7.RELEASE\spring-jdbc-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-aspects\4.3.7.RELEASE\spring-aspects-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\aspectj\aspectjweaver\1.8.9\aspectjweaver-1.8.9.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-test\4.3.7.RELEASE\spring-test-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-context-support\4.3.7.RELEASE\spring-context-support-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-context\4.3.7.RELEASE\spring-context-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-tx\4.3.7.RELEASE\spring-tx-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-beans\4.3.7.RELEASE\spring-beans-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\cglib\cglib-nodep\2.1_3\cglib-nodep-2.1_3.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-aop\4.3.7.RELEASE\spring-aop-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-core\4.3.7.RELEASE\spring-core-4.3.7.RELEASE.jar;C:\Users\Administrator\.m2\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;C:\Users\Administrator\.m2\repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;C:\Users\Administrator\.m2\repository\org\mybatis\mybatis\3.4.2\mybatis-3.4.2.jar;C:\Users\Administrator\.m2\repository\org\mybatis\mybatis-spring\1.3.1\mybatis-spring-1.3.1.jar;C:\Users\Administrator\.m2\repository\org\mybatis\generator\mybatis-generator-core\1.3.5\mybatis-generator-core-1.3.5.jar;C:\Users\Administrator\.m2\repository\tk\mybatis\mapper\4.1.2\mapper-4.1.2.jar;C:\Users\Administrator\.m2\repository\javax\persistence\persistence-api\1.0\persistence-api-1.0.jar;C:\Users\Administrator\.m2\repository\com\github\pagehelper\pagehelper\5.0.0\pagehelper-5.0.0.jar;C:\Users\Administrator\.m2\repository\com\github\jsqlparser\jsqlparser\0.9.5\jsqlparser-0.9.5.jar;C:\Users\Administrator\.m2\repository\c3p0\c3p0\0.9.1.2\c3p0-0.9.1.2.jar;C:\Users\Administrator\.m2\repository\com\mchange\mchange-commons-java\0.2.11\mchange-commons-java-0.2.11.jar;C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar;C:\Users\Administrator\.m2\repository\jstl\jstl\1.2\jstl-1.2.jar;C:\Users\Administrator\.m2\repository\javax\servlet\javax.servlet-api\3.0.1\javax.servlet-api-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\slf4j\slf4j-simple\1.7.25\slf4j-simple-1.7.25.jar;C:\Users\Administrator\.m2\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;C:\Users\Administrator\.m2\repository\junit\junit\4.12\junit-4.12.jar;C:\Users\Administrator\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\Administrator\.m2\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;C:\Users\Administrator\.m2\repository\xml-apis\xml-apis\1.0.b2\xml-apis-1.0.b2.jar;C:\Users\Administrator\.m2\repository\org\jsoup\jsoup\1.10.1\jsoup-1.10.1.jar;C:\Users\Administrator\.m2\repository\commons-fileupload\commons-fileupload\1.3.3\commons-fileupload-1.3.3.jar;C:\Users\Administrator\.m2\repository\commons-io\commons-io\2.6\commons-io-2.6.jar;C:\Users\Administrator\.m2\repository\org\json\json\20160810\json-20160810.jar;C:\Users\Administrator\.m2\repository\io\cloudsoft\windows\winrm4j\0.5.0\winrm4j-0.5.0.jar;C:\Users\Administrator\.m2\repository\io\cloudsoft\windows\winrm4j-client\0.5.0\winrm4j-client-0.5.0.jar;C:\Users\Administrator\.m2\repository\org\apache\cxf\cxf-rt-transports-http\3.1.10\cxf-rt-transports-http-3.1.10.jar;C:\Users\Administrator\.m2\repository\org\apache\cxf\cxf-core\3.1.10\cxf-core-3.1.10.jar;C:\Users\Administrator\.m2\repository\org\codehaus\woodstox\woodstox-core-asl\4.4.1\woodstox-core-asl-4.4.1.jar;C:\Users\Administrator\.m2\repository\org\codehaus\woodstox\stax2-api\3.1.4\stax2-api-3.1.4.jar;C:\Users\Administrator\.m2\repository\org\apache\ws\xmlschema\xmlschema-core\2.2.1\xmlschema-core-2.2.1.jar;C:\Users\Administrator\.m2\repository\org\apache\cxf\cxf-rt-transports-http-hc\3.1.10\cxf-rt-transports-http-hc-3.1.10.jar;C:\Users\Administrator\.m2\repository\org\slf4j\jcl-over-slf4j\1.7.22\jcl-over-slf4j-1.7.22.jar;C:\Users\Administrator\.m2\repository\org\apache\cxf\cxf-rt-frontend-jaxws\3.1.10\cxf-rt-frontend-jaxws-3.1.10.jar;C:\Users\Administrator\.m2\repository\xml-resolver\xml-resolver\1.2\xml-resolver-1.2.jar;C:\Users\Administrator\.m2\repository\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;C:\Users\Administrator\.m2\repository\org\apache\cxf\cxf-rt-bindings-soap\3.1.10\cxf-rt-bindings-soap-3.1.10.jar;C:\Users\Administrator\.m2\repository\org\apache\cxf\cxf-rt-wsdl\3.1.10\cxf-rt-wsdl-3.1.10.jar;C:\Users\Administrator\.m2\repository\wsdl4j\wsdl4j\1.6.3\wsdl4j-1.6.3.jar;C:\Users\Administrator\.m2\repository\org\apache\cxf\cxf-rt-databinding-jaxb\3.1.10\cxf-rt-databinding-jaxb-3.1.10.jar;C:\Users\Administrator\.m2\repository\com\sun\xml\bind\jaxb-impl\2.2.11\jaxb-impl-2.2.11.jar;C:\Users\Administrator\.m2\repository\com\sun\xml\bind\jaxb-core\2.2.11\jaxb-core-2.2.11.jar;C:\Users\Administrator\.m2\repository\org\apache\cxf\cxf-rt-bindings-xml\3.1.10\cxf-rt-bindings-xml-3.1.10.jar;C:\Users\Administrator\.m2\repository\org\apache\cxf\cxf-rt-frontend-simple\3.1.10\cxf-rt-frontend-simple-3.1.10.jar;C:\Users\Administrator\.m2\repository\org\apache\cxf\cxf-rt-ws-addr\3.1.10\cxf-rt-ws-addr-3.1.10.jar;C:\Users\Administrator\.m2\repository\org\apache\cxf\cxf-rt-ws-policy\3.1.10\cxf-rt-ws-policy-3.1.10.jar;C:\Users\Administrator\.m2\repository\org\apache\neethi\neethi\3.0.3\neethi-3.0.3.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpcore-nio\4.4.4\httpcore-nio-4.4.4.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpcore\4.4.4\httpcore-4.4.4.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpasyncclient\4.1.2\httpasyncclient-4.1.2.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpclient\4.5.2\httpclient-4.5.2.jar;C:\Users\Administrator\.m2\repository\commons-codec\commons-codec\1.9\commons-codec-1.9.jar;C:\Users\Administrator\.m2\repository\org\xmlunit\xmlunit-matchers\2.3.0\xmlunit-matchers-2.3.0.jar;C:\Users\Administrator\.m2\repository\org\xmlunit\xmlunit-core\2.3.0\xmlunit-core-2.3.0.jar;C:\Users\Administrator\.m2\repository\com\jcraft\jsch\0.1.54\jsch-0.1.54.jar;C:\Users\Administrator\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;C:\Users\Administrator\.m2\repository\org\quartz-scheduler\quartz\2.2.3\quartz-2.2.3.jar;C:\Users\Administrator\.m2\repository\com\itextpdf\itextpdf\5.4.3\itextpdf-5.4.3.jar;C:\Users\Administrator\.m2\repository\com\itextpdf\itext-asian\5.2.0\itext-asian-5.2.0.jar;C:\Users\Administrator\.m2\repository\com\itextpdf\tool\xmlworker\5.4.1\xmlworker-5.4.1.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 TestExample,test
Connected to the target VM, address: '127.0.0.1:7284', transport: 'socket'
[main] INFO org.springframework.test.context.support.DefaultTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
[main] INFO org.springframework.test.context.support.DefaultTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@54c562f7, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@318ba8c8, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@6dbb137d, org.springframework.test.context.support.DirtiesContextTestExecutionListener@3c9d0b9d, org.springframework.test.context.transaction.TransactionalTestExecutionListener@43301423, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@2f112965]
[main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext.xml]
[main] INFO org.springframework.context.support.GenericApplicationContext - Refreshing org.springframework.context.support.GenericApplicationContext@130161f7: startup date [Wed Jan 09 14:40:41 CST 2019]; root of context hierarchy
[INFO ] 2019-01-09 14:40:42,692 method:com.mchange.v2.log.MLog.<clinit>(MLog.java:80)
MLog clients using log4j logging.
[INFO ] 2019-01-09 14:40:42,872 method:com.mchange.v2.c3p0.C3P0Registry.banner(C3P0Registry.java:204)
Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? true; trace: 10]
[m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值