spring多包自动扫描注入有关问题

来源:本网整理

注解有它自身的优点,但是现在用的比较多的还是xml,因为它是可配置的,注解是直接写在程序中的,当项目发布后,要修改起来会相对麻烦一些www.zgxue.com防采集请勿采集本网。

spring多包自动扫描注入问题

项目中所有的spring输入都是通过注解注入,在spring配置中配置自动扫描路径,现在遇到如下问题:

应该可以。个人感觉使用注解和在xml中配置,2种产生bean的方式没有什么差别。

我的项目包结构为:com.aaa.bbb.......引入了别人提供的jar包,里面的注入也是注解方式注入,但是他们的包结构如:com.ccc.ddd......

spring注入方式一般不推荐使用自动扫描的方式,因为项目比较大的时候用起来比较乱,不利于多人共同开发 以及后期维护,建议用配置文件配置注入。这里你用了自动扫描注入,spring会先从它的配置

此时我的spring扫描应该如何配置才可以两个包路径下的都可以扫描?

注解有它自身的优点,但是现在用的比较多的还是xml,因为它是可配置的,注解是直接写在程序中的,当项目发布后,要修改起来会相对麻烦一些。spring注入方式一般不推荐使用自动扫描的方式,因为

我按如下方式配置,一直不可以:

这个坑我也踩过,Spring设计原则是如果有接口有实现类,注解注入的时候必须使用接口注入,而不能使用实现类注入,你把@Resource(“accountService”) private AccoutService accountService这

<context:component-scan base-package="com"

你用junit测试这个方法的时候你要自己去获取userService这个服务的,junit单元测试其实是一个独立的单元测试,它跟你的上下文是没有关系的!

use-default-filters="false">

<context:include-filter type="regex"

expression=".*aaa.*" />

<context:include-filter type="regex"

expression=".*ccc.*" />

</context:component-scan>

表达式里面改成com.aaa.*和com.bbb.*结果也是不行,报错如下:

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [jar:file:/E:/tomcat/apache-tomcat-7.0.53-default/wtpwebapps/serverPay/WEB-INF/lib/icu4j-2.6.1.jar!/com/ibm/icu/impl/data/LocaleElements_zh__PINYIN.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 48188

at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:290)

at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)

at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:84)

at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)

at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1438)

at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)

at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:195)

at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)

at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:108)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)

at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)

at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)

at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)

at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)

at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)

at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)

at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)

at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

------解决方案--------------------

<context:component-scan base-package="com.*"/>

试试这样行么?

------解决方案--------------------

这样的高级用法,还没有用过呢

------解决方案--------------------

<context:component-scan base-package="com"  use-default-filters="false">

    <context:include-filter type="regex" expression="com.aaa.bbb.*" />

    <context:include-filter type="regex" expression="com.ccc.ddd.*" />

</context:component-scan>

这样呢

------解决方案--------------------

c_a_3(); 引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

<context:component-scan base-package="com.*"/>

试试这样行么?

这样也试过,也是不行,错误也是上面我贴出来的错。

有可能是他引入注解的jar和你引入的jar冲突了。

不是jar包冲突问题,我自己单独起了个项目,新建了两个不同的包结构,用spring注解注入,也是不行

新建一个也不行?怪事啊

是不行的,你可以自己新建个项目试试,给两个或多个不同结构的包进行注入。

如com.aaa.bbb和com.ccc.ddd.xxx这种包结构,给aaa和ccc下面的对象注入

我试了一下写成

<context:component-scan base-package="com.aaa.bbb.*"/>

 <context:component-scan base-package="com.ccc.ddd.*"/>

<context:component-scan base-package="com.*"/>

都是可以的啊

main调用的时候不能通过@Autowired 来进行注解,因为你没有启动项目内容来自www.zgxue.com请勿采集。

免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
Copyright © 2017 www.zgxue.com All Rights Reserved