spring注入static属性
2019-09-29 本文已影响0人
南岩飞雪
问题
代码里又一些工具类,注入了一些bean;结果引用这个工具类也得是用bean注入的方式;写起来很难受,想直接调用静态方法省事
解决
- @set方法注入实现(推荐)
实际还是@Component生成了bean,但是我们没用这个bean,把bean的属性赋值给类的属性
- @set方法注入实现(推荐)
@Component
public class LogRobotHelper {
private static String env;
private static HttpTemplate httpTemplate;
// 注入配置文件属性
@Value("${environment.env}")
public void setEnv(String env) {
LogRobotHelper.env = env;
}
// 注入bean
@Resource
public void setHttpTemplate(HttpTemplate httpTemplate) {
LogRobotHelper.httpTemplate = httpTemplate;
}
- @PostConstruct OR xml中配置 init-method(麻烦)
@Component
public class LogRobotHelper {
// 注入到临时的bean
@Autowired
private HttpTemplate httpTemplateTmp;
// static 属性变量
private static HttpTemplate httpTemplate;
@PostConstruct
public void init() {
// 临时的bean引用 赋给 static 属性
LogRobotHelper.httpTemplate = httpTemplateTmp;
}
- 通过 ApplicationContext 对象,getBean(麻烦)