Spring @autowired无法注入

小胖9040 java工程师  2015-11-12 09:50:21

Web.xml中是不是也要添加参数
我试了一下直接获取prodcutService可以直接运行就像这样
...全文
551 27 点赞 打赏 收藏 举报
写回复
27 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
查看实体BEEN 有没有加上注解
  • 打赏
  • 举报
回复
小胖9040 2015-11-13
sqlMapConfig.xml中的配置


我用new ClassPathXmlApplicationContext("applicationContext.xml");再getBean就可以正常运行
  • 打赏
  • 举报
回复
兔子托尼啊 2015-11-13
Could not open ServletContext resource [/sqlMapConfig.xml] 看看 sqlMapConfig 怎么配置的。/
  • 打赏
  • 举报
回复
小胖9040 2015-11-13
各位大神们我找到问题的所在了 是我的spring监听器出来问题Spring容器根本就没有加载 所以才会这样
但是现在我的监听器问题还是没解决 大家帮忙看看
web.xml配置


报错信息:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/sqlMapConfig.xml]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:589)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1263)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1948)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/sqlMapConfig.xml]
at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:140)
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:358)
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)
... 26 more
十一月 13, 2015 10:13:18 上午 org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/sqlMapConfig.xml]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:589)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1263)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1948)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/sqlMapConfig.xml]
at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:140)
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:358)
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)
... 26 more
  • 打赏
  • 举报
回复
空心兜兜 2015-11-13
classpath这种写法……不一定兼容所有web容器
  • 打赏
  • 举报
回复
小胖9040 2015-11-13
@无法显示此用户 大神我没搞懂自己是哪错了 所以Web.xml中的配置没变 但是我把applicationContext.xml中的配置改了就可以运行了

红框内的东东是新加的以前没有 您知道是怎么回事吗?
  • 打赏
  • 举报
回复
兔子托尼啊 2015-11-13
路径不对啊。你看看 你看看 你spring 路径怎么配置的。 java calsspath*
  • 打赏
  • 举报
回复
小胖9040 2015-11-13
@无法显示此用户 大神求助啊
  • 打赏
  • 举报
回复
licip 2015-11-12
autowire你是根据名字自动注入,还是根据类型自动注入,再加一属性指明吧。
  • 打赏
  • 举报
回复
小胖9040 2015-11-12
我用的是mapper应该不是这个问题吧
  • 打赏
  • 举报
回复
mtian2020 2015-11-12
看一下你的base-package的值有没有和你的controller和dao所在路径对应上
  • 打赏
  • 举报
回复
小胖9040 2015-11-12
引用 1 楼 yanghaimingg 的回复:
application.xml中添加开启扫描注解: <context:component-scan base-package="com.**.dao"/> <context:component-scan base-package="com.**.web"/>
都试了可是还是没用啊
  • 打赏
  • 举报
回复
mtian2020 2015-11-12
application.xml中添加开启扫描注解: <context:component-scan base-package="com.**.dao"/> <context:component-scan base-package="com.**.web"/>
  • 打赏
  • 举报
回复
scmod 2015-11-12
@Service("productService")加在实现类上 还有最开始实现类上没加@Service的时候你那样直接getBean出来不为null吗? 是不是自己在配置文件里面加了bean class="xx.xx.ProductServiceImpl" id="productService"了?spring配置文件貌似没发全
  • 打赏
  • 举报
回复
兔子托尼啊 2015-11-12
15楼错误是你配置文件路径不对。 最上面的那个错误是你得指定 Qualifier 。因为你现在是多个,找不到对应的实现类,所以得配置上Qualifier 。
  • 打赏
  • 举报
回复
小胖9040 2015-11-12
引用 14 楼 thpnihao 的回复:
你的web.xml中配置的属性名 contextconfiglocation 应该是 springmvc.xml

这个xml是开启基于注解功能的,只需在里面配置

<!-- 该 BeanPostProcessor 将自动对标注 @Autowired 的 Bean 进行注入 -->
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

这趟@autowire才能生效呢

这是web.xml中的配置

这是springmvc.xml中的配置

异常:

  • 打赏
  • 举报
回复
thpnihao 2015-11-12
你的web.xml中配置的属性名 contextconfiglocation 应该是 springmvc.xml 这个xml是开启基于注解功能的,只需在里面配置 <!-- 该 BeanPostProcessor 将自动对标注 @Autowired 的 Bean 进行注入 --> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> 这趟@autowire才能生效呢
  • 打赏
  • 举报
回复
小胖9040 2015-11-12
引用 12 楼 xiakepan 的回复:
试一下这种方法: 在ProductServiceImpl类上写@Service("productServiceImpl") 在ProductController3类中的ProductService属性上面写 @Autowired @Qualifier("productServiceImpl")
都试了 但是还是不管用啊 我都想放弃了
  • 打赏
  • 举报
回复
番茄鲨鱼面 2015-11-12
引用 10 楼 xiakepan 的回复:
[quote=引用 9 楼 li4562258fj155 的回复:] [quote=引用 7 楼 xiakepan 的回复:] 你的ProductService有添加@Service么 just like this:
还是不行啊 [/quote] 这里没有service所在的包: [/quote] 试一下这种方法: 在ProductServiceImpl类上写@Service("productServiceImpl") 在ProductController3类中的ProductService属性上面写 @Autowired @Qualifier("productServiceImpl")
  • 打赏
  • 举报
回复
小胖9040 2015-11-12
引用 10 楼 xiakepan 的回复:
这里没有service所在的包:


指定接口 指定实现 两个一起指定都试了 都没用
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-11-12 09:50
社区公告
暂无公告