spring--Ioc静态成员变量注入

注入静态成员变量:

方式一:类定义上添加@Component注解, set方法上添加@Autowired注解

@Component
public class CacheExtensionsHelper {
    private static ICacheManager cacheManager;

    @Autowired
   public void setCacheManager(ICacheManager cacheManager) { CacheExtensionsHelper.cacheManager = cacheManager; } }

注意:

  1. 类上面要添加注解@Component, 告诉spring这个类需要扫描
  2. set方法上添加@Autowired注解, 告诉spring自动注入
  3. set方法不要添加static关键字,否则自动注入失败

方式二:注解@PostConstruct方式

@Component
public class SecurityLogic {

    @Autowired
    private PropertyConfigurer propertyConfigurerTmp;
    
    private static PropertyConfigurer propertyConfigurer;

    @PostConstruct
    public void init() {
        SecurityLogic.propertyConfigurer = propertyConfigurerTmp;
    }

    public static void encrypt(String param) throws Exception {
        String encryptType=propertyConfigurer.getProperty("encryptType");
        //todo
    }
}

@PostConstruct 注解的方法在加载类的构造函数之后执行,也就是在加载了构造函数之后,执行init方法;

(@PreDestroy 注解定义容器销毁之前的所做的操作)这种方式和在xml中配置 init-method和 destory-method方法差不多,定义spring 容器在初始化bean 和容器销毁之前的所做的操作;

原文地址:https://www.cnblogs.com/jvStarBlog/p/12174525.html