前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >static静态方法内调用Spring(依赖注入)的bean

static静态方法内调用Spring(依赖注入)的bean

作者头像
王念博客
发布2019-07-24 10:31:29
7.4K0
发布2019-07-24 10:31:29
举报
文章被收录于专栏:王念博客王念博客

前言:一般需要在static方法里调用注入进来的service,因为是静态方法,所以必须声明该service也必须是static的,这时候你会发现注入不进来,会报null指针,这个时候需要使用 @PostConstruct来解决。

第一种

Spring也基于JSR-250注解,包括@PostConstruct,@PreDestroy和@Resource 注解。虽然这些注释都没有真正必需的,因为你已经有其他的候补,但还是让我给他们有关一个简单的想法。@PostConstruct 和@PreDestroy 注解:要定义安装和拆卸一个bean,我们只是声明了初始化方法和/或销毁,<bean>方法的参数。在init-method属性指定一个方法,是被称为bean上后立即实例化。同样,销毁规定了被称为bean被从容器中取出之前的方法。

注解@PostConstruct 这个其实就是类似声明了,当你加载一个类的构造函数之后执行的代码块,也就是在加载了构造函数之后,就将service复制给一个静态的service。类上需要用@Component

代码语言:javascript
复制
  //解决static方法 调用注入对象的方法
    @Autowired
    private ConfigDaoImpl configDaoImpl;
    
    private static ConfigUtil configUtil;
    @PostConstruct
    public void initialize() {
        //@Component will call construct
        configUtil = this;
    }

第二种,通过set方法注入,类上需要用@Component

代码语言:javascript
复制
  //解决static方法 调用注入对象的方法
    private static UserService userService;

    @Autowired
    public void setUserService(UserService userService) {
        DubboAuthService.userService = userService;
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档