关于spring的@autowire的使用

integrater 2013-05-17 02:03:56
我想用<context:component-scan base-package="com.spring3.bean"/>来注入bean失败
下面是项目结构和配置文件,请问问题出在哪?


目录结构
测试代码

报错就是空指针异常,user为null
...全文
197 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
alpha_423 2013-05-17
  • 打赏
  • 举报
回复

<context:component-scan base-package="com.spring3">
    <context:include-filter type="regex" expression="com.spring3.*"/>
</context:component-scan>

public class Test {
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
		((UserService)context.getBean("userService")).fun();
	}
}
lwb553009450 2013-05-17
  • 打赏
  • 举报
回复
引用 10 楼 mumuaimao2009 的回复:
[quote=引用 9 楼 lwb553009450 的回复:] UserService必须是spring实例的,user没必要setter和getter
终于找到问题所在了,应该在每个被扫描的类上面加入@Component,不然不能识别,看来和我一样菜的人大有人在,能不能给自己的帖子加分呢[/quote] 你是user类上没加引用是吧,你那代码很不规范啊,关于是否需要set方法,如果使用配制文件该方法,注解方式不要
integrater 2013-05-17
  • 打赏
  • 举报
回复
引用 9 楼 lwb553009450 的回复:
UserService必须是spring实例的,user没必要setter和getter
终于找到问题所在了,应该在每个被扫描的类上面加入@Component,不然不能识别,看来和我一样菜的人大有人在,能不能给自己的帖子加分呢
lwb553009450 2013-05-17
  • 打赏
  • 举报
回复
UserService必须是spring实例的,user没必要setter和getter
integrater 2013-05-17
  • 打赏
  • 举报
回复
引用 6 楼 alpha_423 的回复:
好吧,注入是不需要get方法的,只要set方法。
1、在你的applicationContext.xml里加入一行<bean id="userService" class="com.spring3.service.UserService">
2、你的测试代码new UserService().fun()改成 ((UserService)applicationContext.getBean("userService")).fun()

不知道你自己有没有亲自试,我按你说的做还是报错,第一我的目的是通过扫描包的方式,简化xml文件,你这种方式还得写<bean..../>没达到我的目的,第二,就算写了<bean.../>依然报错继续等高人
alpha_423 2013-05-17
  • 打赏
  • 举报
回复
引用 6 楼 alpha_423 的回复:
好吧,注入是不需要get方法的,只要set方法。 1、在你的applicationContext.xml里加入一行<bean id="userService" class="com.spring3.service.UserService"> 2、你的测试代码new UserService().fun()改成 ((UserService)applicationContext.getBean("userService")).fun()
<bean id="userService" class="com.spring3.service.UserService" />
alpha_423 2013-05-17
  • 打赏
  • 举报
回复
好吧,注入是不需要get方法的,只要set方法。 1、在你的applicationContext.xml里加入一行<bean id="userService" class="com.spring3.service.UserService"> 2、你的测试代码new UserService().fun()改成 ((UserService)applicationContext.getBean("userService")).fun()
integrater 2013-05-17
  • 打赏
  • 举报
回复
我代码已经都贴出来了,要是代码有问题,明眼人一看就知道了,求指点
integrater 2013-05-17
  • 打赏
  • 举报
回复
引用 3 楼 alpha_423 的回复:
额,那就是你代码的问题了。你这个UserService是你自己new出来的,不是spring容器管理的,所以spring不会给你注入。
我的目的是注入user,没说要注入UserService啊,还有user有必要用setter和getter吗
alpha_423 2013-05-17
  • 打赏
  • 举报
回复
额,那就是你代码的问题了。你这个UserService是你自己new出来的,不是spring容器管理的,所以spring不会给你注入。
integrater 2013-05-17
  • 打赏
  • 举报
回复
引用 1 楼 alpha_423 的回复:
定义user的set方法先
user有set方法和get,只是没贴出来
alpha_423 2013-05-17
  • 打赏
  • 举报
回复
定义user的set方法先

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧