通过注解获取的bean为null

问题描述

在applicationContext.xml中定义的一个bean,通过@Autowired注解获取时为null,而通过ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/spring/applicationContext.xml");ctx.getBean()这种方式却可以获取对象

相关代码

<bean id="dalClient" class="com.zhl.framework.dal.client.support.DefaultDalClient">
    <property name="resources" value="classpath:sqlmapper/sqlMap_*.xml" />
    <property name="defaultDataSource" ref="dataSource" />
</bean>

这是一个封装的访问sql文件的方法

<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:conf/spring/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

这是web配置

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 3.8k
1 个回答

1、是否配置的扫描,spring的注入机制可以去看看
2、是否被spring托管,是new出来的还是可以注入的,
我以前写过一个线程业务类,是不能向里面注入bean的,需要new出来
线程中要这样获取bean

ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:spring.xml");  
ac.getBean("companyService"); 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题