前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring boot 在静态类中注入spring组件

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

作者头像
earthchen
发布2020-09-24 15:01:53
8410
发布2020-09-24 15:01:53
举报
文章被收录于专栏:earthchen的专栏

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

方案

  1. 首先需要将该类变成一个spring的bean,也就是在类上添加@Component注解,当然其他相关注解也可以
  2. 在类中声明一个该类的静态对象,同时也将需要注入的bean注入进来.
  3. 写一个init()方法并在上面添加@PostConstruct注解,在方法中将this赋给该类的静态对象,并且使用将依赖bean赋给静态对象的bean
  4. 使用的时候使用对象.属性即可

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

代码语言:javascript
复制
@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中成功
  • 上述文字皆为个人看法,如有错误或建议请及时联系我
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-02-22,,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档