解决遗留问题:@PostConstruct注入不成功
来源:互联网 发布:linux nginx 域名绑定 编辑:程序博客网 时间:2024/05/22 00:27
前两天做了个纯java代码的rabbitMQ监听多个ip的客户端功能,由于用的不是配置方式的listener方式—博文中有这一节,无法自动启动。就用@PostConstruct来项目启动时运行监听mq,但是老遇到调用业务逻辑层方法时,注入不成功导致空指针异常。今天排查了一下,发现主要问题是框架扫包忽略了。
直接先说原因吧:
1.忽略ssm本身对注解是通过扫包才让注解有效的
<!-- 自动扫描该包,支持注解的层限制,把api这个controller层排除在外了。另外多个包中间用逗号或者分号隔开都可以。 --><context:component-scan base-package="com.**.service,com.**.action,com.**.common" > <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.api"/></context:component-scan>
2.忽略@Service的注解由于扫包是扫service层和action层(相当于service层),common工具层。所以在api层(相当于controller层)用@Service和不用注解都是错误的,都会导致注入失败。
3.注意扫包区间,出了这个范围@PostConstruct是无效的。应用在启动时是不会走带有这个注解的方法的。
4.@PostCoustruct注解用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化。此方法所在的类必须放入服务之前调用。也就是该注解的类上不能随便注解:经验总结是能用@Service注解,不能用@Controller注解,否则启动不会走这个方法。这个类定位为服务层/业务层。而不是控制层(web层)
有了上面说的注意点。我重新在工具类包common包中写了个测试类。然后spring配置文件上扫包范围增加了这个common包。代码如下:com.zhanglf.common.cache.CommonCacheMap.java
package com.zhanglf.common.cache;import javax.annotation.PostConstruct;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.zlf.bo.StaffBo;import com.zlf.service.IStaffService;@Service("CommonCacheMap")public class CommonCacheMap { @Resource private IStaffService staffService; @PostConstruct public void getOneStaff(){ StaffBo staffBo = staffService.selectByPrimaryKey("s01"); System.out.println(staffBo.getName()); }}
结果是注入成功,运行结果如下:
这样@PostConstruct注入问题就解决了。哈哈
阅读全文
0 0
- 解决遗留问题:@PostConstruct注入不成功
- 作图的遗留问题,是建立内存图片不成功吗?以后解决。
- StoreAccess遗留问题的解决
- 数据结构考试后遗留问题解决
- 遗留问题
- 遗留问题
- 遗留问题
- 遗留问题
- 遗留问题
- 遗留问题
- 遗留问题
- struts2 注入时不成功
- 【Spring】@PostConstruct实现Spring静态注入
- Postconstruct
- PostConstruct
- 历史遗留问题ms解决掉了
- 让C++更像C#遗留问题解决
- AS 一个历史遗留问题的解决
- STL_vector<>
- C++count算法(STL)
- jar导入maven本地库
- MQ客户端链接失败:Failed to verify URI nio://hostname:61616 already known: java.net.UnknownHostExcept
- Canvas&Paint[]Paint:drawText位置
- 解决遗留问题:@PostConstruct注入不成功
- Java并发编程:Callable、Future和FutureTask
- 前端之插件-ztree
- 贪心算法 题型总结
- 关于斐波那契数列算法设计问题 --漫漫算法路 小结篇
- 用几个数字任意组合成最大数
- 设备树
- JDWP 协议介绍
- 解决iOS工程被Xcode识别成Mac工程的问题