Spring 注入静态对象使用方式

Posted 李晗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 注入静态对象使用方式相关的知识,希望对你有一定的参考价值。

静态注入要求

  1. 能被Spring扫描到主类
  2. 能被Spring扫描到注入的类

注入的三种方式

被注入的类

package lihan.properties;
import org.springframework.stereotype.Component;

// 添加注解可以被Spring 扫到
@Component 
public class ConfigProperties {
 private String aaa = "aaa";
 private String bbb = "bbb";
 private String ccc = "ccc";
 private String ddd = "ddd";
 private String eee = "eee";
 public String getAaa() {
        return aaa;
 }
    public void setAaa(String aaa) {
        this.aaa = aaa;
 }
    public String getBbb() {
        return bbb;
 }
    public void setBbb(String bbb) {
        this.bbb = bbb;
 }
    public String getCcc() {
        return ccc;
 }
    public void setCcc(String ccc) {
        this.ccc = ccc;
 }
    public String getDdd() {
        return ddd;
 }
    public void setDdd(String ddd) {
        this.ddd = ddd;
 }
    public String getEee() {
        return eee;
 }
    public void setEee(String eee) {
        this.eee = eee;
 }
}

1. 使用构造器注入

@Component
public class StuStaticConfig {

    private static ConfigProperties configProperties;
    
    public StuStaticConfig(ConfigProperties configProperties) {
        this.configProperties = configProperties;
    }
    
}

2. set注入

set不能为static静态方法

@Component
public class StuStaticConfig {

    private static ConfigProperties configProperties;
    
    @Autowired
    public void setConfigProperties(ConfigProperties configProperties) {
        StuStaticConfig.configProperties = configProperties;
    } 
}

3. @PostConstruct 注入

@Component
public class StuStaticConfig {

    private static ConfigProperties configProperties;
    
    @Autowired
    private ConfigProperties configPropertiesTemp;

    @PostConstruct
    public void init() {
        this.configProperties = this.configPropertiesTemp;
    }
}

将注入的类,赋值给静态对象上

以上是关于Spring 注入静态对象使用方式的主要内容,如果未能解决你的问题,请参考以下文章

spring 中注入的对象为空

spring 静态接口注入

spring初学

初识Spring对象(Bean)实例化及属性注入(xml方式)

自己new的对象怎么注入spring管理的对象

springMVC 怎么在方法中注入HttpServletResponse对象