Spring boot 在静态类中注入spring组件

在做项目的时候突然有这样一个需求,在工具类中需要注入spring组件,由于工具类都是静态的直接注入或者new一个类都是不行的,因此了解了一下相关用法.

方案

  1. 首先需要将该类变成一个spring的bean,也就是在类上添加@Component注解,当然其他相关注解也可以

  2. 在类中声明一个该类的静态对象,同时也将需要注入的bean注入进来.

  3. 写一个init()方法并在上面添加@PostConstruct注解,在方法中将this赋给该类的静态对象,并且使用将依赖bean赋给静态对象的bean

  4. 使用的时候使用对象.属性即可

我的项目里是将一个自定义的文件上传路径写在配置文件中,然后在文件工具类中使用它.相关关键代码如下

@Component
public class FileUtil {

    private static FileUtil fileUtil;

    @Autowired
    private ProjectProperties projectProperties;

    @PostConstruct
    public void init() {
        fileUtil = this;
        fileUtil.projectProperties = this.projectProperties;
    }

    /**
     * 获取图片根目录
     *
     * @return
     */
    public static String getImgBasePath() {
        String os = System.getProperty("os.name");
        String basePath;
        if (os.toLowerCase().startsWith("win")) {
            basePath = "D:/projectdev/image/";
        } else {
            basePath = fileUtil.projectProperties.getFilePathProperties().getBasePath();
        }
        basePath = basePath.replace("/", SEPERATOR);
        return basePath;
    }
}

以上就可以实现在静态类中注入依赖了.

注:

  • 上述测试在ubuntu16.04 lts jdk1.8 spring boot 1.5.6.RELEASE中成功
  • 上述文字皆为个人看法,如有错误或建议请及时联系我
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,408评论 6赞 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,266评论 19赞 139
  • 什么是Spring Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Jav...
    jemmm阅读 16,843评论 1赞 133
  • S姐身材芊细小巧玲珑,满口柔声细语,拥有一张笑容可掬的脸,虽谈不上是个绝色美女,但是气质相当温润,当她手里端着...
    如愿如意阅读 774评论 0赞 0
  • 2016年马上就要过去了,我们园诚邀各位家长和宝宝们一起做手工!
    清河幼儿园阅读 181评论 0赞 0

友情链接更多精彩内容