Spring boot 在静态类中注入spring组件
时间:2022-07-25
本文章向大家介绍Spring boot 在静态类中注入spring组件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在做项目的时候突然有这样一个需求,在工具类中需要注入spring组件,由于工具类都是静态的直接注入或者new一个类都是不行的,因此了解了一下相关用法.
方案
- 首先需要将该类变成一个spring的bean,也就是在类上添加@Component注解,当然其他相关注解也可以
- 在类中声明一个该类的静态对象,同时也将需要注入的bean注入进来.
- 写一个init()方法并在上面添加@PostConstruct注解,在方法中将this赋给该类的静态对象,并且使用将依赖bean赋给静态对象的bean
- 使用的时候使用对象.属性即可
我的项目里是将一个自定义的文件上传路径写在配置文件中,然后在文件工具类中使用它.相关关键代码如下
@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中成功
- 上述文字皆为个人看法,如有错误或建议请及时联系我
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释