解决 SpringMvc 非controller类使用@Autowired注解 service注入为null的问题

出处http://blog.sina.com.cn/s/blog_98721cfd0102xj96.html

使用SpringMVC框架,在开发的过程中有一些工具类、静态非controller类需要调用由spring管理的service层。但是使用@Autowired注解注入Service,会报null异常;搜索了下网上的一些方法,又实际测试了下,发现网上说的还缺少了点东西,所以自己总结下写下来作为学习笔记吧,也希望能帮助下其他遇到这个问题的童鞋~好了下面说下具体实现步骤:

1、在配置文件(springmvc.xml)中加入工具类所在包的扫描配置,我一开始按照网上的说法改造时就是因为这里没有配置,所以一直是null。"com.zzzy.bms.util"是我的工具类所在的包路径

 

2、改造工具类,这里的代码是拷贝的网上其他大神的,我稍微加了下注释

@Component// 将工具类声明为spring组件,这个必须不能忘

public class TestUtils {

@Autowired

private ItemService itemService;



@Autowired

// private ItemMapper itemMapper;



// 静态初使化当前类

public static TestUtils testUtils;



// 在方法上加上注解@PostConstruct,这样方法就会在Bean初始化之后被Spring容器执行(注:Bean初始化包括,实例化Bean,并装配Bean的属性(依赖注入))。

@PostConstruct

public void init() {

testUtils = this;

}



// utils工具类中使用service或mapper接口的方法例子,用"testUtils.xxx.方法" 就可以了

public static void test(Item record) {

// 调用service的方法

testUtils.itemService.insert(record);

}

}

好了,以上就是我的改造过程~我在自己的项目中测试通过了。

 

还有一些其他的方法,这边也记录下,不过没有测试。觉得不太符合springmvc的使用习惯啊:

//applicationContext-service.xml为声明service的配置文件名

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-service.xml");

//"userService"为配置文件中定义的service的ID,

UserService uService = (UserService) ac.getBean("userService"); 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值