关于spring依赖注入到普通类中为null的情况解决理解方案
来源:互联网 发布:手机淘宝6.7.0 编辑:程序博客网 时间:2024/05/22 09:48
最近写了一个读取日志文件并定时保存的功能,但通过spring的依赖注入一直存在注入的实体类为null 的情况,网上查了很多的方法,有说有配置文件中包扫描的问题,
有的说是注解方式(增加@Component注解)的问题,但查了相应的方法都没有解决我的问题。无意中查到一位大神的方法,但还没有弄清楚原理,在这里先记录下来,方便以后的学习并加上自己的理解,
并希望浏览过的大神会给出一些建议和原理思路:
@Componentpublic class InitTiming {private static final Logger LOGGER = LoggerFactory.getLogger(AbstractListener.class);@Resourceprivate KafkaTraceLogBiz kafkaTraceLogBiz;private static InitTiming initTiming; //关键点1public void setKafkaTraceLogBiz(KafkaTraceLogBiz kafkaTraceLogBiz) {this.kafkaTraceLogBiz = kafkaTraceLogBiz;}@PostConstruct //关键点2public void getTiming(){SGSCallBackMethod.executeTiming(kafkaTraceLogBiz);LOGGER.info("request error log callback timing start");}}
通过上面的关键点,就可以将bean成功注入到我的InitTiming类中,在这里先看看注解@PostConstruct的理解
从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion);@PostConstruct和@PreDestroy。这两个注解被用来修饰一个非静态的void()方法 。写法有如下两种方式:
@PostConstruct
Public void someMethod() {}
或者
public @PostConstruct void someMethod(){}
被@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。PreDestroy()方法在destroy()方法执行执行之后执行
被注解的Servlet生命周期
需要注意的是,注解会多多少少地影响到服务器的启动速度。服务器在启动时候会遍历Web 应用的WEB-INF/classes下的所有class文件与WEB-INF/lib下的所有jar文件,以检查哪些类使用了注解。如果应用程序中没有 使用任何注解,可以在Web.xml中设置的metadata-complete属性为true.(支持@PostConstruct和 @PreDestroy的服务器需要支持Servlet2.5规范。Tomcat5.x仅支持Servlet2.4规范。)
我现在要说的是用实例说明它有什么作用。
比如说我有一种情况,在我的servlet初始化加载之前我想处理一些东西,像加载缓存等等。
怎么做。@PostConstruct就派上用场了。那为什么这玩意用的不多呢,这是因为如果初始化之前我们要加载或处理某些玩意完全可以在构造器初始化时就处理了,但这种方法需要自己重写构造器。
- 关于spring依赖注入到普通类中为null的情况解决理解方案
- Spring依赖注入的接口为null
- #spring注入为空null,普通类中引用springIOC类
- SpringBoot的拦截器中依赖注入为null
- spring框架中依赖注入的理解,目的就是为降低耦合性
- Spring 依赖注入的理解
- spring的依赖注入理解
- 初学Spring中关于Spring的依赖注入
- 多线程中引入Spring自动注入的对象为null
- 对Spring框架思想中依赖注入的理解
- 关于spring 注入中循环 ,环形依赖问题的明确
- Spring-理解依赖注入
- Spring 父类注入的属性 在子类中调用为null
- spring依赖注入和Aop的理解
- 如何理解spring的依赖注入
- spring控制反转,依赖注入的理解
- spring的依赖注入怎么理解
- Spring依赖注入的详细理解
- Android Studio 简单使用 GreenDao3.0
- 执行脚本过程中出现^M: bad interpreter: No such file or directory错误解决方案
- 希尔排序C语言实现
- 接口、抽象类的定义
- JAVA实现快速排序
- 关于spring依赖注入到普通类中为null的情况解决理解方案
- 项目管理---git----快速使用git笔记(五)------本地项目代码提交到远程仓库---新建项目
- Android数据库SqLite实现增删改查
- 完整详解swift GCD系列(四)dispatch_semaphore(信号量)
- 微信小程序< 1 > ~ Hello 微信小程序
- fdisk 磁盘分区
- Spring MVC RequestHeader
- require.js
- 如何用消息系统避免分布式事务?