美文网首页
spring注入static属性

spring注入static属性

作者: 南岩飞雪 | 来源:发表于2019-09-29 20:19 被阅读0次

    问题

    代码里又一些工具类,注入了一些bean;结果引用这个工具类也得是用bean注入的方式;写起来很难受,想直接调用静态方法省事

    解决

      1. @set方法注入实现(推荐)
        实际还是@Component生成了bean,但是我们没用这个bean,把bean的属性赋值给类的属性
    @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;
        }
    
      1. @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;
        }
    
      1. 通过 ApplicationContext 对象,getBean(麻烦)

    相关文章

      网友评论

          本文标题:spring注入static属性

          本文链接:https://www.haomeiwen.com/subject/sryructx.html