SpringBoot注入静态属性或静态对象的方法

 更新时间:2024年12月21日 10:44:12   作者:假女吖☌  
我们在使用SpringBoot为一些静态属性或者静态对象注入时会发现注入不成功,我们可以以下这几种方式把需要注入的值注入到静态属性中,感兴趣的朋友一起看下

SpringBoot注入静态属性或静态对象

前言

我们在使用SpringBoot为一些静态属性或者静态对象注入时会发现注入不成功。
我们可以以下这几种方式把需要注入的值注入到静态属性中。

setter方式注入

代码如下(示例):@Value与@Autowired都可以使用

@SpringBootTest(classes = Application.class)
public class TestApplication {
    private static DaoUtil daoUtil;
    private static String ACTIVE;
    // 这里其实我们只需要一个setter方法
    // 即可把springboot中的配置文件中的属性注入到静态属性中
    @Value("${spring.profiles.active}")
    public  void setACTIVE( String ACTIVE) {
        TestApplication.ACTIVE = ACTIVE;
    }
    @Autowired
    public void setDaoUtil(DaoUtil daoUtil) {
        TestApplication.daoUtil = daoUtil;
    }
    @Test
    void contextLoads() {
        System.out.println(getActive());
        System.out.println(daoUtil);
    }
    public static String getActive(){
        return ACTIVE;
    }
}

@PostConstruct init方式注入

@Autowired
DaoUtil daoUtilProxy;
@Value("${spring.profiles.active}")
String  activeProxy;
private static DaoUtil daoUtil;
private static String ACTIVE;
@PostConstruct
private  void init() {
    daoUtil = daoUtilProxy;
    ACTIVE = activeProxy;
}

注意

两种方式都能成功注入对象或属性。 注入成功的前提是属性或对象所在的类是SpringBoot容器的组件(Bean)。

// 用ide工具生成静态对象setter方法时会自动的把static的修饰词带上
// 这样也会让注入不成功(作者的惨痛经历😭😭😭)
// 这里我们需要把static去掉即可
public static void setACTIVE(String ACTIVE) {
        TestApplication.ACTIVE = ACTIVE;
}

总结

我们需要可以在组件类中使用@Value或@Autowired注入静态属性,才能注入成功。否则不成效;

到此这篇关于SpringBoot注入静态属性或静态对象的文章就介绍到这了,更多相关SpringBoot注入静态属性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java Swing监听器的原理及使用方法举例

    Java Swing监听器的原理及使用方法举例

    swing是一个比较老的技术了,我觉得学习它还是很有必要的,也比较容易激发学习的兴趣,这篇文章主要介绍了Java Swing监听器的原理及使用方法的相关资料,需要的朋友可以参考下
    2025-08-08
  • Spring中的ClassPathXmlApplicationContext源码详解

    Spring中的ClassPathXmlApplicationContext源码详解

    这篇文章主要介绍了Spring中的ClassPathXmlApplicationContext源码详解,ApplicationContext的主要实现类是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默认从类路径加载配置文件,后者默认从文件系统中装载配置文件,需要的朋友可以参考下
    2023-12-12
  • mybatis判断int是否为空的时候,需要注意的3点

    mybatis判断int是否为空的时候,需要注意的3点

    这篇文章主要介绍了mybatis判断int是否为空的时候,需要注意的3点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot3-yaml文件配置方式

    SpringBoot3-yaml文件配置方式

    这篇文章主要介绍了SpringBoot3-yaml文件配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 关于Feign的覆写默认配置和Feign的日志

    关于Feign的覆写默认配置和Feign的日志

    这篇文章主要介绍了关于Feign的覆写默认配置和Feign的日志方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Springboot工具类StringUtils使用教程

    Springboot工具类StringUtils使用教程

    这篇文章主要介绍了Springboot内置的工具类之StringUtils的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • SpringBatch简单入门案例

    SpringBatch简单入门案例

    文章介绍了SpringBatch批处理框架的使用,包括其基本概念、优势、架构以及入门案例,通过简单的任务和数据库连接配置,展示了如何使用SpringBatch进行基本的批处理操作,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • Java并发实例之CyclicBarrier的使用

    Java并发实例之CyclicBarrier的使用

    这篇文章主要介绍了Java并发实例之CyclicBarrier的使用,涉及CyclicBarrier的介绍,以及相关的并发实例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 详细介绍使用Java调用Python的四种方法

    详细介绍使用Java调用Python的四种方法

    这篇文章主要给大家介绍了关于使用Java调用Python的四种方法,每种方法根据实际项目需求有其适用场景,其中,推荐使用Runtime.getRuntime()方法,因为它更为简洁且易于实现,需要的朋友可以参考下
    2024-10-10
  • springboot restTemplate连接池整合方式

    springboot restTemplate连接池整合方式

    这篇文章主要介绍了springboot restTemplate连接池整合方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论