0 0

spring 使用注解 对象为空 急求解啊5

web下配置了spring之后,applicationContext.xml文件如下:
<context:annotation-config />

<!-- 指定了需要扫描的类包 -->
<context:component-scan base-package="com.huawei.iread.portal.*" />

我现在对应包下面的类中使用注解标签。如下:
@Autowired
private TestUserService testUserService;
@Autowired
private MybatisTestDao mybatisTestDao;
这里一直是空值,我手动取值
MybatisTestDao dao1=new XmlBeanFactory(new ClassPathResource("applicationContext.xml")).getBean(MybatisTestDao.class);
System.out.println(dao1);这里是有值的,就是说这样去读取配置文件的配置,扫描注解是有效的,因为MybatisTestDao 在扫描包的范围内,但是tomcat启动之后,再去注解这个对象,就拿不到值了,不管什么对象,都是空值,我想应该不是标签无效吧,现在可以确定就是实体都被扫描到了,就是不知道为什么一直注入不进去,空值,求各位大侠帮助,小弟万分感谢

问题补充:通过查看日志,确定spring扫描出了所有配置了注解标签的类对象,但是就是通过@autowired标签注入不进来,启动的时候,这个标签标记的类变量是没有报错的,说明找到了对应的bean,说明spring加载是成功的,但是就是这个值在程序启动后访问的时候为空,求好心人帮忙解决。
2012年10月17日 17:10

7个答案 按时间排序 按投票排序

0 0

spring注解 @componen @Repository @service @controller

2012年10月18日 09:30
0 0

有没有用@Service注解?

2012年10月18日 09:22
0 0

引用

@Autowired
private TestUserService testUserService;
@Autowired
private MybatisTestDao mybatisTestDao;
这里一直是空值,我手动取值
MybatisTestDao dao1=new XmlBeanFactory(new ClassPathResource("applicationContext.xml")).getBean(MybatisTestDao.class);


你这个类对象肯定不是spring 的listener构造出来的,因为@Autowired默认是必须要注入的,否则容器初始化失败。
你没提到容器启动失败,说明你这个类对象并不是在spring中获取的。

2012年10月18日 08:51
0 0

配置log4j看看tomcat启动有没有扫描到所有的资源

log4j.rootCategory=info, myLog

#org.apache.log4j.ConsoleAppender定义myLog的输出端是控制台
log4j.appender.myLog1=org.apache.log4j.ConsoleAppender

#org.apache.log4j.PatternLayout可以灵活地指定布局模式
log4j.appender.myLog1.layout=org.apache.log4j.PatternLayout

# %n输出一个回车换行符
# %m输出代码中指定的消息
# %p输入日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL
# %l输出日志发生的位置,相当于%c.%m(%f:%l)的组合,包括类目名、发生的线程、以及在代码中的行数
log4j.appender.myLog1.layout.ConversionPattern=-----------------%n %m %n %l %n------------------------------%n%n

2012年10月17日 19:01
0 0

XmlBeanFactory  这个默认不支持BeanPostProcessor,需要使用ApplicationContext实现如ClassPathXmlApplicationContext。

请参考
http://jinnianshilongnian.iteye.com/blog/1489787
http://jinnianshilongnian.iteye.com/blog/1492424

2012年10月17日 19:01
0 0

前端框架使用的struts,JSF,SpringMVC, 如果是springMVC则有一个专门的配置文件做这个设置,写在

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:META-INF/spring/**/*.xml</param-value>
	</context-param>

这个指定的spring配置文件中是无效的<controller层的代码>。
如果是其他的框架,则必须确认此类是有spring进行初始化的,不然不加入spring的管理,也所不会真的这些注解做操作,自动设置对应的值的哦。

2012年10月17日 17:53
0 0

MybatisTestDao dao1=new XmlBeanFactory(new ClassPathResource("applicationContext.xml")).getBean("mybatisTestDao");
试试

2012年10月17日 17:16

相关推荐

Global site tag (gtag.js) - Google Analytics