解决netty中spring对象注入失败的问题
程序员文章站
2022-06-09 19:00:18
目录netty中spring对象注入失败发现了问题所在在netty中注入spring成份可以通过以下方式netty中spring对象注入失败今天在做项目的时候发现在netty中注入service失败,...
netty中spring对象注入失败
今天在做项目的时候发现在netty中注入service失败,百度许久后也找不到答案(@component,@postconstruct)未起作用,后灵光一现
发现了问题所在
如图:
这些地方都必须通过spring注入才能实现其他依赖注入,之前这里都是采用new的,所以导致spring注入失败
在netty中注入spring成份
前不久,在netty中使用到数据库数据,由于netty服务启动后的上下文与 spring的上下文不同,所以在netty中获取dao数据很头痛,无法使用@autowired注入。
aware本义就是"自动的",顾名思义spring自动做了些事情。在此某些特殊的情况下,bean需要实现某个功能,但该功能必须借助于spring容器,此时就必须先获取spring容器,然后借助于spring容器实现该功能。
为了让bean获取它所在的spring容器,可以让该bean实现applicationcontextaware接口。
可以通过以下方式
import org.springframework.beans.beansexception; import org.springframework.context.applicationcontext; import org.springframework.context.applicationcontextaware; import org.springframework.stereotype.component; /** * * @author shilei * * @time 2019年6月19日 下午5:17:50 * * @desc netty中注入 spring autowired */ @component public class toolnettyspirngautowired implements applicationcontextaware { private static applicationcontext applicationcontext; @override public void setapplicationcontext(applicationcontext applicationcontext) throws beansexception { if (toolnettyspirngautowired.applicationcontext == null) { toolnettyspirngautowired.applicationcontext = applicationcontext; } } // 获取applicationcontext public static applicationcontext getapplicationcontext() { return applicationcontext; } // 通过name获取 bean. public static object getbean(string name) { return getapplicationcontext().getbean(name); } // 通过class获取bean. public static <t> t getbean(class<t> clazz) { return getapplicationcontext().getbean(clazz); } // 通过name,以及clazz返回指定的bean public static <t> t getbean(string name, class<t> clazz) { return getapplicationcontext().getbean(name, clazz); } }
在使用时 可在某业务handler中添加以下代码:
private static nodeservservice nodeservservice; static { nodeservservice = toolnettyspirngautowired.getbean(nodeservservice.class); } private static nodejparepository nodedao; static { nodedao = toolnettyspirngautowired.getbean(nodejparepository.class); }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
下一篇: 苹果iOS 15发布!体验大变样
推荐阅读
-
因Spring AOP导致@Autowired依赖注入失败的解决方法
-
Spring/SpringBoot:SpringBoot中@Value注入失败或取值为null解决方案
-
js中图片加载失败,显示默认图片的问题如何解决?
-
Spring MVC + JPA开发中遇到对象延迟加载,session关闭的情况解决方法 JPAMVCSpringBeanHibernate
-
spring中对象的注入方式
-
解决vue中对象属性改变视图不更新的问题
-
解决angularjs service中依赖注入$scope报错的问题
-
【未解决问题】封装slf4j在spring中无法输出正确的调用类
-
flutter中build.gradle仓库的配置(解决外网下载速度过慢失败的问题)
-
web过滤器使用spring依赖注入 解决过滤器中不能注入bean的问题